如何直接从子类调用重写的超类方法

时间:2012-06-17 03:34:21

标签: java oop

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);

但它调用子类方法?

1 个答案:

答案 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


  

你们真的确定没有其他方法可以解决这个问题吗?

  1. 我不明白为什么你认为这是一个“问题”。