繼承和多型是面向物件編程的兩個重要概念,它們使得我們可以創建更加通用、可擴展的代碼,
2.2.1. 繼承
繼承是一種創建新類的方式,新類(子類)從現有類(父類)繼承屬性和方法,子類可以重寫或擴展父類的功能,
要創建一個子類,可以使用 extends 關鍵字:
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(); // 繼承自父類的方法
}
}
2.2.2. 方法重寫(覆寫)
子類可以重寫父類的方法,以便在呼叫子類物件的該方法時使用子類的實作而不是父類的實作,重寫方法的回傳型別、方法名和引數串列必須與父類相同,
class SubClassName extends ParentClassName {
@Override // 注解,表明該方法重寫了父類的方法,非必須但建議使用
ReturnType methodName(Parameters) {
// 子類的實作
}
}
示例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(); // 呼叫子類重寫的方法
}
}
2.2.3. 多型
多型是一個物件在不同情況下表現出不同的行為,多型是通過父類參考指向子類物件實作的,
ParentClassName objectName = new SubClassName();
示例3:多型
// 父類
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) {
// 多型
Animal myAnimal = new Dog();
myAnimal.name = "Buddy";
myAnimal.age = 3;
myAnimal.sleep(); // 呼叫子類重寫的方法
// 注意:無法訪問子類特有的方法和屬性
// myAnimal.bark(); // 錯誤
// myAnimal.breed = "Golden Retriever"; // 錯誤
}
}
多型的主要優點是代碼的可擴展性和維護性,當你需要添加新的子類時,不需要修改使用多型的代碼,
2.2.4. 抽象類和介面
抽象類和介面是 Java 中實作多型和代碼復用的兩種方式,
-
抽象類:包括抽象方法(沒有實作的方法)和具體方法,子類必須實作所有抽象方法,使用
abstract關鍵字定義抽象類和抽象方法,abstract class AbstractClassName { // 抽象方法 abstract ReturnType methodName(Parameters); // 具體方法 ReturnType methodName(Parameters) { // 方法實作 } } ``` -
介面:定義一組方法簽名(沒有實作的方法),實作介面的類必須實作所有方法,使用
interface關鍵字定義介面,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();
}
// 子類實作抽象類和介面
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(); // 實作抽象類的抽象方法
myDog.sleep(); // 繼承自抽象類的具體方法
myDog.play(); // 實作介面的方法
}
}
這是關于繼承和多型的基本介紹,通過這些概念,你可以創建更加靈活和可擴展的代碼,在實際開發中,你會遇到更多復雜和實用的用例,通過多做練習和深入學習,你將更好地掌握這些知識點,


推薦閱讀:
https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA
https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/553751.html
標籤:其他
上一篇:2.1. 類與物件
下一篇:返回列表
