Java中的繼承(區別於OC/Swift)

類的繼承格式

class 父類 {
}
 
class 子類 extends 父類 {
}

關鍵詞:extends,implements
需要注意的是:Java不支持多繼承,但支持多重繼承。
繼承的缺點:耦合度就會提高,造成代碼之間的聯繫緊密,代碼獨立性越差。
implement:使用implement關鍵字可以變相的是java具有多繼承的特性,使用範圍爲類繼承接口的情況,可以同時繼承多個接口(接口與接口之間採用逗號分隔);

public interface A {
    public void eat();
    public void sleep();
}
 
public interface B {
    public void show();
}
 
public class C implements A,B {
}

final關鍵字聲明類可以把類定義成不能繼承的,即最終類;或者用於修飾方法,該方法不能被子類重寫;

構造器

子類是不繼承父類的構造器(構造方法或者構造函數)的,它只是調用父類的構造器並配以適當的參數列表。
如果父類的構造器沒有參數,則子類的構造器中不需要使用super關鍵字調用父類的構造器,系統會自動調用父類的無參數構造器。

重寫

即外殼不變,核心重寫!子類可以根據需求實現父類的方法。
重寫的規則:

  • 訪問權限不能比父類中被重寫的方法的訪問權限更低,
  • 聲明爲static的方法不能被重寫,但能夠被再次聲明。
  • 子類和父類在同一個包中,那麼子類可以重寫父類的所有方法,除了聲明爲private和final的方法。
  • 子類和父類不在同一個包中,那麼子類只能夠重寫父類的聲明爲public和protect的非final方法。
  • 重寫的方法能夠拋出任何非強制異常,無論被重寫的方法是否拋出異常,重寫的方法不能拋出新的強制性異常,或者比被重寫方法聲明的更廣泛的強制性異常,反之則可以。
  • 構造方法不能被重寫。

重載

重載是在一個類裏面,方法名相同,而參數不同,返回類型可以相同也可以不同。
每一個重載的方法都必須有一個獨一無二的參數類型列表。
最常用的方法就是構造器的重載。

重載的規則:

  • 被重載的方法必須改變參數列表;
  • 被重載的方法可以改變返回類型;
  • 被重載的方法可以改變訪問修飾符;
  • 被重載的方法可以聲明新的或更廣的檢查異常。
  • 方法能夠在同一個類中或者在一個子類中被重載;
  • 無法以返回值類型作爲重載函數的區分標準;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章