日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Java编程思想——到底选择合成还是继承

發布時間:2025/1/21 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java编程思想——到底选择合成还是继承 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

無論合成還是繼承,都允許我們將子對象置于自己的新類中。大家或許會奇怪兩者間的差異,以及到底該如何選擇。 如果想利用新類內部一個現有類的特性,而不想使用它的接口,通常應選擇合成。也就是說,我們可嵌入一個對象,使自己能用它實現新類的特性。但新類的用戶會看到我們已定義的接口,而不是來自嵌入對象的接口。考慮到這種效果,我們需在新類里嵌入現有類的private對象。

有些時候,我們想讓類用戶直接訪問新類的合成。也就是說,需要將成員對象的屬性變為public。成員對象會將自身隱藏起來,所以這是一種安全的做法。而且在用戶知道我們準備合成一系列組件時,接口就更容易理解。car(汽車)對象便是一個很好的例子:

//: Car.java // Composition with public objectsclass Engine {public void start() {}public void rev() {}public void stop() {} }class Wheel {public void inflate(int psi) {} }class Window {public void rollup() {}public void rolldown() {} }class Door {public Window window = new Window();public void open() {}public void close() {} }public class Car {public Engine engine = new Engine();public Wheel[] wheel = new Wheel[4];public Door left = new Door(),right = new Door(); // 2-doorCar() {for(int i = 0; i < 4; i++)wheel[i] = new Wheel();}public static void main(String[] args) {Car car = new Car();car.left.window.rollup();car.wheel[0].inflate(72);} } ///:~

由于汽車的裝配是故障分析時需要考慮的一項因素(并非只是基礎設計簡單的一部分),所以有助于客戶程序員理解如何使用類,而且類創建者的編程復雜程度也會大幅度降低。

如選擇繼承,就需要取得一個現成的類,并制作它的一個特殊版本。通常,這意味著我們準備使用一個常規用途的類,并根據特定的需求對其進行定制。只需稍加想象,就知道自己不能用一個車輛對象來合成一輛汽車——汽車并不“包含”車輛;相反,它“屬于”車輛的一種類別。“屬于”關系是用繼承來表達的,而“包含”關系是用合成來表達的。

總結

以上是生活随笔為你收集整理的Java编程思想——到底选择合成还是继承的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。