首頁  >  文章  >  Java  >  Java初學者的迷惑:繼承與多態的妙用

Java初學者的迷惑:繼承與多態的妙用

WBOY
WBOY原創
2024-05-07 11:15:02967瀏覽

繼承允許建立新類,繼承現有類別的欄位和方法,多型態允許物件以不同方式被處理,這取決於它們的類型。繼承創建類別的層次結構,多態使程式碼可以與多種類型物件一起工作。在動物收容所管理系統中,繼承可用於創建動物類,多態可用於處理不同類型動物的共同特徵和差異,例如透過發出聲音。

Java初學者的迷惑:繼承與多態的妙用

Java初學者的困惑:繼承與多態的妙用

##繼承和多型是物件導向程式設計的基本概念,對於初學者來說理解它們有時可能會比較困難。本文旨在透過一個實戰案例詳細闡述這兩個概念。

繼承

繼承是一種建立新類別的機制,該類別從現有類別繼承欄位和方法。它使我們能夠重複使用程式碼並創建類別的層次結構。

// 父类
class Shape {
    protected double length, width;

    public Shape(double length, double width) {
        this.length = length;
        this.width = width;
    }

    public double getArea() {
        return length * width;
    }
}

// 子类
class Rectangle extends Shape {
    public Rectangle(double length, double width) {
        super(length, width);
    }

    @Override
    public double getArea() {
        return length * width;
    }
}

在這個範例中,

Rectangle 類別繼承自 Shape 類別。 Rectangle 類別重用了 Shape 類別中的欄位和 getArea() 方法,並定義了一個自己的建構子。

多態

多型是指物件可以以不同方式被處理,這取決於它們的型別。它允許我們編寫程式碼,該程式碼可以與多種類型物件一起工作,而無需明確地檢查物件類型。

Shape shape = new Rectangle(4, 5);
System.out.println(shape.getArea()); // 输出:20.0

Shape shape2 = new Circle(3.14);
System.out.println(shape2.getArea()); // 输出:30.159265358979323

在這種情況下,

shapeshape2 變數都引用Shape 類型的對象,但它們實際上指向不同的子類別物件(RectangleCircle)。由於多態,我們能夠呼叫 getArea() 方法,而不必知道物件的具體類型。

實戰案例

繼承和多態特別適合建立可擴展且可重複使用的程式碼。例如,考慮一個動物收容所管理系統:

// Animal 类包含动物的共同特征
abstract class Animal {
    protected String name;
    protected int age;

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public abstract void speak();
}

// Dog 类继承 Animal 类
class Dog extends Animal {
    public Dog(String name, int age) {
        super(name, age);
    }

    @Override
    public void speak() {
        System.out.println("Woof!");
    }
}

// Cat 类继承 Animal 类
class Cat extends Animal {
    public Cat(String name, int age) {
        super(name, age);
    }

    @Override
    public void speak() {
        System.out.println("Meow!");
    }
}

每個動物都能透過

speak() 方法發出聲音。由於多態特性,我們可以輕鬆地將不同的動物物件放入一個列表中,然後遍歷該列表並讓每一隻動物都發出聲音。

List<Animal> animals = new ArrayList<>();
animals.add(new Dog("Rex", 5));
animals.add(new Cat("Fluffy", 2));

for (Animal animal : animals) {
    animal.speak();
}

輸出:

Woof!
Meow!

透過繼承和多態,我們可以建立靈活且可擴展的程式碼,它可以處理不同類型物件之間的共同特徵和差異。

以上是Java初學者的迷惑:繼承與多態的妙用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn