這是我的方案在Java中:尋找繼承方案
interface I{}
class A implements I{}
class B extends A{}
所以,現在這類需要實現該接口的I算法?如果A和B類共享實施會怎麼樣? 致以問候
這是我的方案在Java中:尋找繼承方案
interface I{}
class A implements I{}
class B extends A{}
所以,現在這類需要實現該接口的I算法?如果A和B類共享實施會怎麼樣? 致以問候
class A
必須提供所有的實施,因爲它不是abstract
。有關更多詳細信息,請參閱here。
class
B可以覆蓋任何/所有這些方法。
如果您A
抽象(作爲一個階級),那麼它可以提供abstract
方法在接口這些方法(基本上只是聲明爲abstract
)和B
將提供唯一的實現。
您只需要在A類中實現I接口。或者,您可以在B類中重寫該實現,但如果您不這樣做,那麼這兩個類的行爲方式都會相同(使用A實現)。
1)A類必須實現接口I的方法。
2)然而,如果需要,B類可以覆蓋這些定義。 3)如果類A沒有實現,則應聲明爲抽象類,在這種情況下,類B應該實現這些。
陳述implements
你承諾類將實現一些接口。說明extends
你允許自己重用基類的實現。 extends
意味着implements
。
所以在你的情況下,你承諾A
將實施I
。接下來你承諾B
也將實現I
,但將使用A
的實現作爲基礎。
因此,您的模式假設B
與A
共享一些執行A
作爲源。沒關係,如果這是你想要的。
你還可以:
1)在這種情況下B
狀態class B implements I
將在它自己的。
2)持有多數在一些第三類實現的,稱爲例如Base
,像如下
interface I {}
class Base implements I {}
class A extends Base{}
class B extends Base{}
這樣A
和B
將是平等的權利。
3)可以持有任意類和使用聚合實施和裝飾它:
interface I {
String method1(String a);
String method2(String a);
}
class ImplementationHolder1 // does not implement I!
{
String method1impl(String a) {};
}
class ImplementationHolder2 // does not implement I!
{
String method2impl(String a) {};
}
class A implements I {
ImplementationHolder1 h1;
ImplementationHolder2 h2;
String method1(String a) {
return h1.method1impl();
};
String method2(String a) {
return h2.method2impl();
};
}
記住,你應該讓abstract
類如果沒有完全實現接口。
如果它不符合您的需要,您也可以覆蓋子孫類中的任何基類實現。