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类的构造函数。