我是出于好奇而不是必然而已.我想答案就像是"因为这就是Java的构建方式".我想知道为什么选择这种方式.
例如,如果我的超类有这个方法:
public void foo()
{
System.out.println("We're in the superclass.");
}
Run Code Online (Sandbox Code Playgroud)
并且子类重写该方法:
@Override
public void foo()
{
super.foo();
System.out.println("We're in the subclass.");
}
Run Code Online (Sandbox Code Playgroud)
为什么需要super.foo()在子类的方法的顶部(如果它将被使用)?为什么我不能交换这两行来使它看起来像这样:
@Override
public void foo()
{
System.out.println("We're in the subclass.");
super.foo();
}
Run Code Online (Sandbox Code Playgroud)
它没有.它适用于构造函数,但对于普通方法,您可以随时调用它.如果你不想,你甚至不必调用它,或者你可以完全调用不同的父类方法.
从你的例子:
public static void main(String[] args) {
new B().foo();
}
static class A {
public void foo() {
System.out.println("In A");
}
}
static class B extends A {
public void foo() {
System.out.println("In B");
super.foo();
}
}
Run Code Online (Sandbox Code Playgroud)
输出
In B
In A
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48 次 |
| 最近记录: |