日本国产欧美大码A视频 _国产高颜值极品在线视频_色偷偷亚洲第一综合网_国产精品一二三社区视频_久久久青草视频

IT培訓(xùn)-高端面授IT培訓(xùn)機(jī)構(gòu)
云和教育:云和數(shù)據(jù)集團(tuán)高端IT職業(yè)教育品牌
  • 國家級(jí)
    全民數(shù)字素養(yǎng)與技能培訓(xùn)基地
  • 河南省
    第一批產(chǎn)教融合型企業(yè)建設(shè)培育單位
  • 鄭州市
    數(shù)字技能人才(碼農(nóng))培養(yǎng)評(píng)價(jià)聯(lián)盟
當(dāng)前位置:
首頁新聞資訊IT資訊正文

Java中繼承與聚合的區(qū)別是什么?

  • 發(fā)布時(shí)間:
    2023-05-25
  • 版權(quán)所有:
    云和教育
  • 分享:

在Java中,繼承(inheritance)和聚合(aggregation)是兩種不同的對(duì)象關(guān)系。它們?cè)诖a實(shí)現(xiàn)和語義上有所不同。

繼承是一種對(duì)象之間的關(guān)系,其中一個(gè)類(子類)繼承另一個(gè)類(父類)的屬性和方法。子類可以重用父類的代碼,并可以添加新的屬性和方法。繼承是一種”is-a”(是一個(gè))關(guān)系,其中子類是父類的一種特殊類型。在Java中,使用關(guān)鍵字extends來實(shí)現(xiàn)繼承。

聚合是一種對(duì)象關(guān)系,其中一個(gè)類(整體)包含另一個(gè)類(部分)作為其成員變量。部分對(duì)象可以獨(dú)立存在,并且可以與多個(gè)整體對(duì)象相關(guān)聯(lián)。聚合是一種”has-a”(有一個(gè))關(guān)系,其中整體對(duì)象包含部分對(duì)象。在Java中,可以通過將部分對(duì)象聲明為整體對(duì)象的成員變量來實(shí)現(xiàn)聚合關(guān)系。

 

下面是一個(gè)簡單的代碼示例,演示了繼承和聚合的區(qū)別:

// 父類
class Vehicle {
    protected String brand;

    public Vehicle(String brand) {
        this.brand = brand;
    }

    public void start() {
        System.out.println("Starting the vehicle");
    }
}

// 子類繼承父類
class Car extends Vehicle {
    private int numberOfSeats;

    public Car(String brand, int numberOfSeats) {
        super(brand);
        this.numberOfSeats = numberOfSeats;
    }

    public void drive() {
        System.out.println("Driving the car");
    }
}

// 部分類
class Engine {
    public void start() {
        System.out.println("Starting the engine");
    }
}

// 整體類包含部分對(duì)象
class Car2 {
    private String brand;
    private Engine engine;

    public Car2(String brand, Engine engine) {
        this.brand = brand;
        this.engine = engine;
    }

    public void start() {
        engine.start();
        System.out.println("Starting the car");
    }
}

public class Main {
    public static void main(String[] args) {
        // 繼承示例
        Car car = new Car("Toyota", 4);
        car.start(); // 調(diào)用繼承自父類的方法
        car.drive(); // 調(diào)用子類的方法

        System.out.println();

        // 聚合示例
        Engine engine = new Engine();
        Car2 car2 = new Car2("Toyota", engine);
        car2.start(); // 調(diào)用整體對(duì)象的方法,并使用部分對(duì)象的方法
    }
}

在上述示例中,Car類通過繼承Vehicle類獲得了start方法,并添加了自己的drive方法。而Car2類使用聚合關(guān)系,將Engine對(duì)象作為成員變量,通過調(diào)用整體對(duì)象的start方法,間接調(diào)用了部分對(duì)象的start方法。