Java入門 第二季第三章 繼承
3-1 Java 中的繼承 ★概念:繼承是類與類的一種關係,是一種“is a”的關係 圖:繼承關係——狗 和 動物 註:Java 中的繼承是單繼承,即一個類只有一個父類 ★好處●子類擁有父類的所有屬性和方法,但如果有private修飾,則子類不能使用該屬性或方法●實現代碼複用 ★文法規則class 子類 extends 父類例:class Dog extends Animal{……} Eclipse中,在建立類時,可以在 Superclass 中選擇父類 自動產生: 3-2 Java 中的方法重寫 ★概念如果子類對繼承父類的方法不滿意,是可以重寫父類繼承的方法的,當調用方法時會優先調用子類的方法。 ★文法規則a.傳回值類型b.方法名c.參數類型及個數都要與父類繼承的方法相同,才叫方法的重寫 ★執行個體:狗 和動物 圖:父類——動物圖:子類——狗圖:測試類別 運行結果:年齡:1狗是可以會吃東西 3-3 Java 中的繼承初始化順序 ★繼承的初始化順序a.先初始化父類再初始化子類b.先執行初始化對象中屬性,再執行構造方法中的初始化 ★ 執行個體一:驗證先初始化父類再初始化子類 圖:父類——動物圖:子類——狗圖:測試類別——調用eat()方法 運行結果: ★ 執行個體二:驗證先執行 初始化對象中的屬性,再執行構造方法中的初始化 圖:父類——動物圖:測試類別——調用eat()方法 運行結果: ★總結 3-4 Java 中的 final 的使用 使用final關鍵字做標識,有“最終的”含義,即 不可修改,不可變化 ★final可以修飾類、方法、屬性和變數●final修飾類 ——該類不允許被繼承●final修飾方法 ——該方法不允許被覆蓋(重寫)●final修飾屬性 ——該類的屬性不會進行隱式的初始化(類的初始化屬性必須有值),或在構造方法中賦值(但只能選其一)且不能在其他地方修改屬性的值。●final修飾變數 ——該變數的值只能賦一次值,即變為 常量 3-5 Java 中的 super 的使用 ★super關鍵字:在對象的內部使用,可以代表父類對象訪問父類的屬性 super.age訪問父類的方法 super.eat() ★子類的構造的過程中必須調用其父類的構造方法,該過程隱式地使用了 super 關鍵字如果子類的構造方法中沒有顯示調用父類的構造方法,則系統預設調用父類無參的構造方法。如果顯式的調用構造方法,必須在子類的構造方法的第一行。 圖:樣本 —— 顯式地調用父類的構造方法 如果子類構造方法中既沒有顯示調用父類的構造方法,而父類又沒有無參的構造方法,則編譯出錯 圖:父類Animal(未聲明無參的建構函式)圖:子類Dog(出錯)圖:報錯提示 3-6 Java 中的 Object 類 Object類是所有類的父類,如果一個類沒有使用extends關鍵字明確標識繼承另外一個類,那麼這個類預設繼承Object類。Object類中的方法,適合所有子類。 ★toString() 方法●在Object類裡面定義 toString()方法的時候,返回對象的雜湊code碼(對象地址字串——唯一標識該對象)● 可以通過重寫 toString() 方法表示出對象的屬性 圖:三個類之間的繼承關係 執行個體一:調用系統內建的 toString() 運行結果:註:imocc.Dog——包名 @後面——記憶體位址 執行個體二:自訂 toString() 方法 Step1:點擊Source,選擇Generate toString() Step2: 選擇想要輸出的屬性,點擊確定 圖:產生及運行效果 ★equals()方法比較的是 對象的引用是否指向 同一塊記憶體位址一般情況下比較兩個對象時,比較它們的值是否一致,所以要進行重寫 執行個體一:調用系統內建的 .equals()註: .equasl() 和 “==”預設比較的都是地址 ——運行結果均為“兩個對象不相同” 執行個體二:自訂 toString() 方法 Step1:點擊Source,選擇Generate hashCode() and equals() Step2: 選擇想要輸出的屬性,點擊確定 圖:產生的程式碼 ▲圖:類對象 與 類的對象 的區別