Java 中的继承 - 创建子类的对象也会调用超类的构造函数。究竟为什么?
2022-09-01 16:37:00
我有一个关于Java中继承的问题。
我有两个类,而类 B 继承自 A:A
B
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!
问:为什么调用 构造函数,当我创建和对象时?
class A
class B
我知道B继承了A的所有内容 - 所有实例或类变量以及所有方法,从这个意义上说,B的对象具有A的所有特征以及B中定义的其他一些特征。但是,我不知道也没有想到,当我创建B类型的对象时,A的构造函数也会被调用。所以,写这个:
B b = new B();
创建两个对象 - 一个是 B 类型对象,另一个是 A 类型对象。
这越来越有趣了,
有人可以解释为什么会发生这种情况吗?