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);
但它调用子类方法?
答案 0 :(得分:5)
...但它调用子类方法
这是重写的全部要点......所以当你在一个实例上调用该方法的子类时,你会获得该方法的子类覆盖!
另一方面,子类本身可以在其超类中调用该方法的重写版本:
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
。
你们真的确定没有其他方法可以解决这个问题吗?