我有class A
和class B
继承class A
和class C
继承class B
,java中如何扩展类,而实现父类的方法
,所有的类都有这个方法:
public void someMethod();
我怎么能从class C
调用此方法,以便从class A
执行该方法?
我有class A
和class B
继承class A
和class C
继承class B
,java中如何扩展类,而实现父类的方法
,所有的类都有这个方法:
public void someMethod();
我怎么能从class C
调用此方法,以便从class A
执行该方法?
你不能。
您还可以从父执行:
super.someMethod();
但仅此而已。如果B定义了一个实现,那将会被调用。如果不是,A会被叫,但是你不能强制A被叫(绕过B)。
原因是因为C从B继承,所以在B中的实现是否使用A中的实现。可能有一个非常好的理由,为什么在A中应该使用而不是。
如果你想C到使用A的实现,如果你需要的B部分代码直接从A继承,考虑到delegating B.
任何类只能使用super
访问其直接父实例的实例。你不能访问祖父母。
这意味着您在C
的成员函数中可以调用super.someMethod()
。这将调用B
的someMethod()
实现。但是,任何给定的对象都无法访问其祖父母的实例。
因此,您不能从C
调用A.someMethod()
执行。
作为设计,您可以在类A中声明someMethod()
final
,然后所有三者都拥有它,但不能更改实现。然后让这确实在B.
还是一个比较复杂的状况所需要的第二件事第二种方法,像这样一些重构的想法也可以帮助:http://www.refactoring.com/catalog/formTemplateMethod.html