LocalDateTime、LocalDate、Date 轉為 String
阿新 • • 發佈:2020-10-27
定義
子類繼承父類的屬性和行為,使得子類物件具有與父類相同的屬性、相同的行為。子類可以直接訪問父類中的非私有的屬性和行為。(共性抽取,提高了程式碼的複用性;使類與類之間產生了關係,是多型的前提)
Java只支援單繼承。
繼承後的幾種情況
-
子類和父類沒有重名屬性和方法時
class Fu { int a = 1; void showFu () { System.out.println("Fu"); } } class Zi extends Fu{ int b = 3; void showZi () { System.out.println("Zi"); } } class Test { public static void main(String [] args) { Zi z = new Zi(); // 子類繼承父類非私有的方法屬性 System.out.println(z.a); // 1 z.showFu(); // Fu System.out.println(z.b); // 3 z.showZi(); // Zi } }
-
子類和父類屬性重名時
class Fu { int a = 1; } class Zi extends Fu{ int a = 3; void show () { // 當父類和子類的屬性名相同時,可以通過 super 訪問父類的屬性,super 指向父類 System.out.println(super.a); System.out.println(this.a); } } class Test { public static void main(String [] args) { Zi z = new Zi(); z.show(); // 1 3 } }
-
子類和父類方法重名時,就發生了方法重寫
方法重寫:子類中出現與父類出現方法簽名和返回值一樣的方法時(返回值型別,方法名和引數列表都相同),會出現覆蓋效果,也稱為重寫或者複寫。宣告不變,重新實現。
方法簽名
由方法名稱和方法的形參列表(形參型別和形參順序)共同組成 ;不包括返回型別和訪問修飾符
class Fu { void show() { System.out.println("Fu"); } } class Zi { // @Override 註解 檢查是否是方法重寫,不是將會報錯 @Override void show() { // 也可通過 super 掉用父類的非私有方法 System.out.println("Zi"); } } class Test { public static void main(String [] args) { Zi z = new Zi(); z.show(); // Zi } }
注意:
- 子類重寫父類方法時,必須要保證子類方法許可權大於等於父類方法許可權
- 子類方法和父類方法具有相同的方法名字、相同的引數列表、相同的返回型別
-
子類和父類的構造方法
-
子類不會繼承父類的構造方法
-
構造方法的作用是初始化類,所以子類例項化時必須先例項化父類。子類的構造方法中預設有一個
super()
,表示掉用父類的構造方法。
class Fu { public Fu(){ System.out.println("Fu"); } } class Zi extends Fu{ public Zi() { // 預設掉用了 super() 父類構造方法 System.out.println("Zi"); } } class H { public static void main(String [] args) { Zi z = new Zi(); // Fu Zi } }
-
super 和 this
-
super :代表當前物件的父類
-
this:代表當前物件(誰掉用就是誰)
super.a; // 父類的成員變數 this.a; // 本類的成員變數 super.show(); // 父類的成員方法 this.show(); // 本類的成員方法 super(); // 父類的構造方法 this(); // 本類的構造方法
子類構造方法中預設掉用
super()
,手動掉用super()
會覆蓋預設的super()
。super()
和this()
都必須是在構造方法的第一行,所以不能同時出現。