我在Java重写方面有点困惑.假设我们有以下继承:
class A{
public A(){
}
void show(){
System.out.println("SuperClass");
}
}
class B extends A{
@Override
void show(){
System.out.println("SubClass");
}
}
public class Test {
public static void main(String[] args) {
B b = new B();
b.show();
}
}
Run Code Online (Sandbox Code Playgroud)
显然,class B覆盖了show()由class A.继承的方法.为什么不b.show();打印消息System.out.println("SuperClass");,因为class B现在的方法show()来自class A?
谢谢.
Era*_*ran 14
showB类的方法会覆盖A类的show方法而不会调用它,因此System.out.println("SuperClass");当您调用showB的实例时没有理由执行它.
如果您将B类更改为:
class B extends A
{
@Override
void show(){
super.show ();
System.out.println("SubClass");
}
}
Run Code Online (Sandbox Code Playgroud)
调用showB的实例也将执行Ashow方法的逻辑.
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |