【发布时间】:2010-10-04 01:48:36
【问题描述】:
我有一个关于 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!
问题:当我创建
class B的对象时,为什么会调用class A的构造函数?
我知道 B 继承了 A 的所有内容——所有实例或类变量以及所有方法,从这个意义上说,B 的对象具有 A 的所有特征以及 B 中定义的一些其他特征。但是,我不知道并没有想到,当我创建一个B类型的对象时,A的构造函数也被调用了。 所以,写这个:
B b = new B();
创建两个对象 - 一个 B 类型,一个 A 类型。
这越来越有趣了,
有人可以解释为什么会发生这种情况吗?
【问题讨论】:
标签: java inheritance constructor subclass