class a{
public void foo(int a){
System.out.println("super");
}
}
class b extends a{
public void foo(int a){
System.out.println("sub");
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我编写代码来调用它的方式
a ob = new b();
ob.foo(7);
Run Code Online (Sandbox Code Playgroud)
但它调用子类方法?
...但它调用子类方法
这是重写的全部要点......所以当你在一个实例上调用该方法的子类时,你得到了该方法的子类覆盖!
另一方面,子类本身可以在其超类中调用方法的重写版本:
class A {
public void foo() {
System.out.println("super");
}
}
class B extends A {
public void foo() {
super.foo(); // call the overridden method
System.out.println("sub");
}
}
Run Code Online (Sandbox Code Playgroud)
...将打印
super
sub
Run Code Online (Sandbox Code Playgroud)
如果你打电话foo给一个B实例.
你们真的确定没有其他方法可以解决这个问题吗?
| 归档时间: |
|
| 查看次数: |
2154 次 |
| 最近记录: |