【发布时间】:2013-01-02 12:55:44
【问题描述】:
下面是一个简单的例子。我有两个抽象类A和B,一个具体类C,其中包含抽象方法。
当我创建一个新的C 时,我希望看到A 和B 的构造函数被调用。知道为什么不调用它们吗?
//Q.java
class Q {
abstract class A {
A() {
System.out.println("in A");
}
public abstract void sayHi();
}
abstract class B extends A {
B() {
super();
System.out.println("in B");
}
}
class C {
C() {
super();
System.out.println("in C");
}
public void sayHi() {
System.out.println("Hi!");
}
}
Q() {
C Ccc = new C();
}
public static void main(String[] args) {
Q z = new Q();
}
}
【问题讨论】:
-
类 c 不扩展 b 或 a... 你应该写 `class c extends b{ ...`
-
c 不继承 a 或 b。所以你并没有真正重写方法
-
井 c 不扩展 b 或 a
-
我已将您的类重命名为大写名称,因为这是通常的约定。否则可能会让人难以阅读。
标签: java class constructor abstract