Javaプログラムにおける抽象化

user260833:

なぜ、以下のような出力がありますか?

自転車が作成されます

安全に実行されています。..

ギア変更

我々が呼び出しされていないためBike()、メソッドの任意の場所を。

abstract class Bike {
    Bike() {
        System.out.println("bike is created");
    }

    abstract void run();

    void changeGear() {
        System.out.println("gear changed");
    }
}

//Creating a Child class which inherits Abstract class  
class Honda extends Bike {
    void run() {
        System.out.println("running safely..");
    }
}

//Creating a Test class which calls abstract and non-abstract methods  
class TestAbstraction2 {
    public static void main(String args[]) {
        Bike obj = new Honda();
        obj.run();
        obj.changeGear();
    }
}
user7294900:

ホンダのクラスを使用して作成されたデフォルトコンストラクタ

クラスは、仮パラメータがないデフォルトコンストラクタその後、コンストラクタの宣言が含まれていないし、何が句をスローした場合、暗黙的に宣言されています。

 public class Point {
      int x, y;
 }

宣言と同等です。

public class Point {
      int x, y;
      public Point() { super(); }
 }

だから、Bike()すべての呼び出しに呼ばれていますnew Honda();

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=183225&siteId=1