我想我们已经在这篇文章中讨论了这个问题,这里继承Java简单说明
但由于这里的例子有点简单,我想澄清的意思不同,我会试一试.
首先,讨论两个类:
public class SuperClass{
SuperClass() {
foo();
}
public void foo() {
System.out.println("Super.foo()");
}
public static void main(String[] args) {
SuperClass tn = new DerivedClass();
tn.foo();
}
}
public class DerivedClass extends SuperClass{
String i;
TrickyB() {
i = "aksjhdf";
}
public void foo() {
System.out.println("In derived.foo() --> " + i);
}
}
Run Code Online (Sandbox Code Playgroud)
我(至少我认为)理解多态的概念,我知道DerivedClass.foo()
调用时调用的原因
new DerivedClass();
Run Code Online (Sandbox Code Playgroud)
我在这看到一个不一致的地方:
当我们调用c'tor DerivedClass
的c'tor时,SuperClass
隐含地称为(所以说作为Derived c'tor的第一行).
所以在Super c'tor中,DerivedClass
没有完全初始化,这使得使用这个类没用.这一点反映在该计划的输出中
In derived.foo() --> null
In derived.foo() --> aksjhdf …
Run Code Online (Sandbox Code Playgroud)