class A
{
public void Foo() {}
}
class B extends A
{
}
class C extends B
{
public void Foo() {}
}
即使B没有覆盖它,C的Foo()是否会覆盖A?或者我是否必须在B中添加一个存根,为每个我想在C中覆盖的方法调用超级方法?
答案 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()时会发生覆盖。