java面向?qū)ο缶幊讨匾拍罾^承和多態(tài)示例解析
繼承
繼承和多態(tài)是面向?qū)ο缶幊痰膬蓚€重要概念,它們使得我們可以創(chuàng)建更加通用、可擴展的代碼。
繼承是一種創(chuàng)建新類的方式,新類(子類)從現(xiàn)有類(父類)繼承屬性和方法。子類可以重寫或擴展父類的功能。
要創(chuàng)建一個子類,可以使用 extends
關(guān)鍵字:
class SubClassName extends ParentClassName { // 子類的成員變量和方法 }
示例1:繼承
// 父類 class Animal { String name; int age; void sleep() { System.out.println(name + " is sleeping."); } } // 子類 class Dog extends Animal { String breed; void bark() { System.out.println(name + " is barking."); } } class Main { public static void main(String[] args) { Dog myDog = new Dog(); myDog.name = "Buddy"; myDog.age = 3; myDog.breed = "Golden Retriever"; myDog.bark(); // 子類的方法 myDog.sleep(); // 繼承自父類的方法 } }
方法重寫(覆蓋)
子類可以重寫父類的方法,以便在調(diào)用子類對象的該方法時使用子類的實現(xiàn)而不是父類的實現(xiàn)。重寫方法的返回類型、方法名和參數(shù)列表必須與父類相同。
class SubClassName extends ParentClassName { @Override // 注解,表明該方法重寫了父類的方法,非必須但建議使用 ReturnType methodName(Parameters) { // 子類的實現(xiàn) } }
示例2:方法重寫
// 父類 class Animal { String name; int age; void sleep() { System.out.println(name + " is sleeping."); } } // 子類 class Dog extends Animal { String breed; void bark() { System.out.println(name + " is barking."); } @Override void sleep() { System.out.println(name + " the " + breed + " is sleeping."); } } class Main { public static void main(String[] args) { Dog myDog = new Dog(); myDog.name = "Buddy"; myDog.age = 3; myDog.breed = "Golden Retriever"; myDog.bark(); myDog.sleep(); // 調(diào)用子類重寫的方法 } }
多態(tài)
多態(tài)是一個對象在不同情況下表現(xiàn)出不同的行為。多態(tài)是通過父類引用指向子類對象實現(xiàn)的。
ParentClassName objectName = new SubClassName();
示例3:多態(tài)
// 父類 class Animal { String name; int age; void sleep() { System.out.println(name + " is sleeping."); } } // 子類 class Dog extends Animal { String breed; void bark() { System.out.println(name + " is barking."); } @Override void sleep() { System.out.println(name + " the " + breed + " is sleeping."); } } class Main { public static void main(String[] args) { // 多態(tài) Animal myAnimal = new Dog(); myAnimal.name = "Buddy"; myAnimal.age = 3; myAnimal.sleep(); // 調(diào)用子類重寫的方法 // 注意:無法訪問子類特有的方法和屬性 // myAnimal.bark(); // 錯誤 // myAnimal.breed = "Golden Retriever"; // 錯誤 } }
多態(tài)的主要優(yōu)點是代碼的可擴展性和維護性。當(dāng)你需要添加新的子類時,不需要修改使用多態(tài)的代碼。
抽象類和接口
抽象類和接口是 Java 中實現(xiàn)多態(tài)和代碼復(fù)用的兩種方式。
抽象類:包括抽象方法(沒有實現(xiàn)的方法)和具體方法。子類必須實現(xiàn)所有抽象方法。使用 abstract
關(guān)鍵字定義抽象類和抽象方法。
abstract class AbstractClassName { // 抽象方法 abstract ReturnType methodName(Parameters); // 具體方法 ReturnType methodName(Parameters) { // 方法實現(xiàn) } } ```
接口:定義一組方法簽名(沒有實現(xiàn)的方法)。實現(xiàn)接口的類必須實現(xiàn)所有方法。使用 interface
關(guān)鍵字定義接口。
interface InterfaceName { // 方法簽名(沒有方法體) ReturnType methodName(Parameters); } ```
示例4:抽象類和接口
// 抽象類 abstract class Animal { String name; int age; abstract void makeSound(); void sleep() { System.out.println(name + " is sleeping."); } } // 接口 interface Pet { void play(); } // 子類實現(xiàn)抽象類和接口 class Dog extends Animal implements Pet { String breed; @Override void makeSound() { System.out.println(name + " is barking."); } @Override public void play() { System.out.println(name + " is playing."); } } class Main { public static void main(String[] args) { Dog myDog = new Dog(); myDog.name = "Buddy"; myDog.age = 3; myDog.breed = "Golden Retriever"; myDog.makeSound(); // 實現(xiàn)抽象類的抽象方法 myDog.sleep(); // 繼承自抽象類的具體方法 myDog.play(); // 實現(xiàn)接口的方法 } }
這是關(guān)于繼承和多態(tài)的基本介紹。通過這些概念,你可以創(chuàng)建更加靈活和可擴展的代碼。在實際開發(fā)中,你會遇到更多復(fù)雜和實用的用例,通過多做練習(xí)和深入學(xué)習(xí),你將更好地掌握這些知識點。
以上就是java面向?qū)ο缶幊讨匾拍罾^承和多態(tài)示例解析的詳細(xì)內(nèi)容,更多關(guān)于java 繼承多態(tài)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java使用HttpSession實現(xiàn)QQ訪問記錄
這篇文章主要介紹了java使用HttpSession實現(xiàn)QQ的訪問記錄的相關(guān)資料,需要的朋友可以參考下2016-03-03SpringBoot整合Flink CDC實現(xiàn)實時追蹤mysql數(shù)據(jù)變動
我們將整合Spring Boot和Apache Flink CDC(Change Data Capture)來實現(xiàn)實時數(shù)據(jù)追蹤,下面是一個基本的實踐流程代碼,包括搭建Spring Boot項目、整合Flink CDC以及實現(xiàn)數(shù)據(jù)變動的實時追蹤,需要的朋友可以參考下2024-07-07