我有一个关于Java中继承的问题。
我有两个类A
和B
,并且类B继承自 A:
public class A {
public A() {
System.out.println("Hi!");
}
}
public class B extends A {
public B() {
System.out.println("Bye!");
}
public static void main(String[] args) {
B b = new B();
}
}
当我运行程序B时,输出结果为:
Hi!
Bye!
问题:当我创建一个
B类
的对象时,为什么会调用A类
的构造函数?
我知道B从A那里继承了所有的实例或类变量和所有方法,在这个意义上,B对象具有A的所有特征以及由B定义的其他一些特征。然而,我不知道并且也没有想象过当我创建一个B类型的对象时,A的构造函数也会被调用。
B b = new B();
创建两个对象-一个是类型为B,另一个是类型为A的。
这变得有趣了,
有人能解释一下为什么会发生这种情况吗?