繼承

Java的類能夠分爲三類:函數

類:使用class定義,沒有抽象方法。url

抽象類:使用abstract class定義,能夠有也能夠沒有抽象方法。.net

接口:使用inerface定義,只能有抽象方法。code

在這三個類型之間存在以下關係:繼承

類能夠extends:類、抽象類(必須實現全部抽象方法),但只能extends一個,能夠implements多個接口(必須實現全部接口方法)。接口

抽象類能夠extends:類,抽象類(可所有、部分、或者徹底不實現父類抽象方法),能夠implements多個接口(可所有、部分、或者徹底不實現接口方法)。get

接口只能extends一個接口。編譯器

繼承之後子類能夠獲得什麼:io

子類擁有父類非private的屬性和方法。編譯

子類能夠添加本身的方法和屬性,即對父類進行擴展。

子類能夠從新定義父類的方法,即多態裏面的覆蓋,後面會詳述。

關於構造函數

構造函數不能被繼承,子類能夠經過super()顯示調用父類的構造函數。

建立子類時,編譯器會自動調用父類的無參構造函數。

若是父類沒有定義無參構造函數,子類必須在構造函數的第一行代碼使用super()顯示調用。

類默認擁有無參構造函數,若是定義了其餘有參構造函數,則無參函數失效,因此父類沒有定義無參構造函數,不是指父類沒有寫無參構造函數。看下面的例子,父類爲Human,子類爲Programmer。

相關文章
相關標籤/搜索