3 回答

TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以通過兩種方式處理它:
如果您使用的是 Java 7 或更低版本,請擴(kuò)展 InterfaceA 以創(chuàng)建新接口
????public?InterfaceB?extends?InterfaceA{? ???????//?Your?new?methods?definitions?here.. ????}
讓 C 類和 D 類實(shí)現(xiàn) InterfaceB。
如果您使用的是 Java 8 或更高版本,可以將默認(rèn)方法添加到 InterfaceA。覆蓋默認(rèn)實(shí)現(xiàn)以在類 C 和 D 中提供您的自定義實(shí)現(xiàn)

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
您應(yīng)該考慮 SOLID 規(guī)則之一—— I
“接口隔離原則”。您可能需要?jiǎng)?chuàng)建一個(gè)新接口,并且您的 C 類和 D 類可以實(shí)現(xiàn)多個(gè)接口。這是更好的設(shè)計(jì)方法。

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊
看起來您沒有使用繼承。
如果 C、D、E、F 是 A/AbstractA 的子類,那么 A 中定義的任何方法都應(yīng)該對所有這些子類都有意義。
您不能阻止一個(gè)方法的子類繼承而允許另一個(gè)方法繼承。
如果您需要引入不同的概念,請使用不同的層次結(jié)構(gòu),但不要嘗試設(shè)計(jì)統(tǒng)一的東西。
對于層次結(jié)構(gòu)中的公共實(shí)現(xiàn),最好的 DRY 方法是將公共實(shí)現(xiàn)移動(dòng)到抽象類中,用于需要實(shí)例字段的方法,并將它們移動(dòng)到接口默認(rèn)方法中,用于不需要它們的方法。
添加回答
舉報(bào)