我有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