最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

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

2023-05-25 09:30 作者:云和數(shù)據(jù)何老師  | 我要投稿


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

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

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

?

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

// 父類(lèi)class Vehicle { ? ?protected String brand; ? ?public Vehicle(String brand) { ? ? ? ?this.brand = brand; ? ?} ? ?public void start() { ? ? ? ?System.out.println("Starting the vehicle"); ? ?}}// 子類(lèi)繼承父類(lèi)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"); ? ?}}// 部分類(lèi)class Engine { ? ?public void start() { ? ? ? ?System.out.println("Starting the engine"); ? ?}}// 整體類(lèi)包含部分對(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)用繼承自父類(lèi)的方法 ? ? ? ?car.drive(); // 調(diào)用子類(lèi)的方法 ? ? ? ?System.out.println(); ? ? ? ?// 聚合示例 ? ? ? ?Engine engine = new Engine(); ? ? ? ?Car2 car2 = new Car2("Toyota", engine); ? ? ? ?car2.start(); // 調(diào)用整體對(duì)象的方法,并使用部分對(duì)象的方法 ? ?}}

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


Java中繼承與聚合的區(qū)別是什么?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
巴林左旗| 忻州市| 临沂市| 化州市| 南岸区| 沁源县| 珠海市| 磐安县| 尚义县| 景泰县| 安顺市| 通海县| 泽普县| 灯塔市| 上饶县| 吉木萨尔县| 罗山县| 犍为县| 兰考县| 屏东县| 玉田县| 安西县| 海原县| 敦化市| 布尔津县| 永济市| 江城| 寻甸| 革吉县| 沙河市| 湾仔区| 刚察县| 集贤县| 吉林市| 酒泉市| 永兴县| 若尔盖县| 镇坪县| 施甸县| 台北市| 深州市|