亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java 中通過重寫一個方法來擴展抽象類的最佳實踐

Java 中通過重寫一個方法來擴展抽象類的最佳實踐

一只名叫tom的貓 2023-10-13 09:53:49
我有一個接口I1、一個A1實現的抽象類I1和許多擴展的類C1...。nA1現在,一個類正在為 的MethodC3實現一種特殊行為,其中每個其他擴展類正在實現一種默認行為。methodAI1A1public interface I1 {  public void methodA();}public abstract class A1 implements I1 {  public void methodA(){    //default behaviour  }  //other methods}public class C1 extends A1 {  //do nothing regarding methodA, because the default behaviour is desired  //other methods}public class C2 extends A1 {  //do nothing regarding methodA, because the default behaviour is desired  //other methods}public class C3 extends A1 {  public void methodA(){    //special behaviour  }  //other methods}現在,對我來說,這似乎不是最好的解決方案,因為很難找出它C3是覆蓋其父級的某些方法。這有最佳實踐嗎?
查看完整描述

1 回答

?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

我會將所有常見方法移至A1另一個抽象級別(我們稱之為ABase),并聲明A1它們A2的特殊行為(如果有)。


這樣,如果C3添加更多相同類型的類,則不需要再次重新定義methodA。


public interface I1 {

  public void methodA();

}

public abstract class ABase implements I1 {

  //other methods

}

public abstract class A1 extends ABase {

  public void methodA(){

    //default behaviour

  }

}

public abstract class A2 extends ABase {

  public void methodA(){

    //default behaviour

  }

}

public class C1 extends A1 {

  //do nothing regarding methodA, because the default behaviour in A1 is desired

  //other methods

}

public class C2 extends A1 {

  //do nothing regarding methodA, because the default behaviour in A1 is desired

  //other methods

}

public class C3 extends A2 {

  //do nothing regarding methodA, because the default behaviour in A2 is desired

  //other methods

}


查看完整回答
反對 回復 2023-10-13
  • 1 回答
  • 0 關注
  • 96 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號