java程序中的抽象

java程序中的抽象,java,constructor,abstract-class,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"

为什么输出如下所示

自行车被创造出来了

安全运行

换档

因为我们没有在任何地方调用
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();
    }
}

本田级是用

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

 public class Point {
      int x, y;
 }
等同于声明:

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

因此,
Bike()
每次调用
new Honda()

在Bike类中,您有一个构造函数Bike(),用于打印语句。因此,默认情况下,子类构建在其父类的构造函数上。这就是为什么每次创建Bike类的对象时,都必须出现print语句。

您已经创建了带有默认构造函数(没有任何形式参数)的Honda类,因此无论何时创建Honda类对象,它都将调用默认构造函数(Honda()),该构造函数将调用父类(Bike)默认构造函数和父类构造函数将打印语句“bike is created”。

Honda中的默认构造函数将隐式调用super类的构造函数。