class A
{
public void Foo() {}
}
class B extends A
{
}
class C extends B
{
public void Foo() {}
}
即使B没有覆盖它,C的Foo()是否会覆盖A的?或者我必须在B中添加一个存根,为每个我想在C中重写的方法调用super的方法?覆盖java中超类'超类的方法?
class A
{
public void Foo() {}
}
class B extends A
{
}
class C extends B
{
public void Foo() {}
}
即使B没有覆盖它,C的Foo()是否会覆盖A的?或者我必须在B中添加一个存根,为每个我想在C中重写的方法调用super的方法?覆盖java中超类'超类的方法?
尽管B没有提及它,Foo
仍然应该由于继承而可用。通过扩展,然后,Foo
也可用于子类C,并且应该能够由于多态性而被覆盖。
因此,C的实例将使用c.foo()
(但已定义),其中A和B的实例将使用a.foo()
,因为它们尚未被覆盖。
假定然后:A a = new C(); a.Foo();将调用C.Foo()? – 2010-09-04 22:08:25
嗯,是的,但这是一个相当混乱的变量命名约定。 – Andy 2010-09-05 01:50:05
是c覆盖A的富()
这是由于继承,虽然B不重写的Foo(),美孚()由B.
而作为C来自A被继承扩展B,Foo()被C继承,并且覆盖发生在C定义Foo()时。
是的,如果只有C,这将覆盖A的实现实例。 A和B的实例将使用A.Foo()。 – dsmith 2010-09-04 15:55:53