java程序中的抽象

use*_*833 4 java constructor abstract-class

为什么输出如下?

自行车创建

安全运行..

装备改变了

因为我们不是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();
    }
}
Run Code Online (Sandbox Code Playgroud)

use*_*900 7

Honda类是使用Default Constructor创建的

如果类不包含构造函数声明,则隐式声明没有形式参数且没有throws子句的默认构造函数.

 public class Point {
      int x, y;
 }
Run Code Online (Sandbox Code Playgroud)

相当于声明:

public class Point {
      int x, y;
      public Point() { super(); }
 }
Run Code Online (Sandbox Code Playgroud)

所以Bike()每次打电话都叫new Honda();