class a{
public void foo(int a){
System.out.println("super");
}
}
class b extends a{
public void foo(int a){
System.out.println("sub");
}
}
这就是我编写代码来调用它的方式
a ob = new b();
ob.foo(7);
但它调用子类方法?
...但它调用子类方法
这就是覆盖的全部意义......因此,当您在子类上调用实例的方法时,您将获得该方法的子类覆盖!
另一方面,子类本身可以在其超类中调用方法的覆盖版本:
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");
}
}
...这将打印
super
sub
如果你调用foo
一个B
实例。
你们真的确定没有其他方法可以解决这个问题吗?