覆盖java中超类'超类中的方法?

时间:2010-09-04 15:53:46

标签: java inheritance override

class A
{
  public void Foo() {}
}

class B extends A
{
}

class C extends B
{
  public void Foo() {}
}

即使B没有覆盖它,C的Foo()是否会覆盖A?或者我是否必须在B中添加一个存根,为每个我想在C中覆盖的方法调用超级方法?

2 个答案:

答案 0 :(得分:6)

即使B没有提及它,由于继承,Foo仍然可用。通过扩展,Foo也可用于子类C,并且由于多态性应该能够被覆盖。

因此,C的实例将使用c.foo()(但是已定义),其中A和B的实例将使用a.foo(),因为它们尚未被覆盖。

答案 1 :(得分:0)

是C覆盖A的Foo()。

这是由于继承,虽然B不会覆盖Foo(),但Foo()是从B继承的。

当C扩展B时,Foo()由C继承,并且当C定义Foo()时会发生覆盖。