日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

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

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

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

有些時候,我們想讓類用戶直接訪問新類的合成。也就是說,需要將成員對象的屬性變?yōu)閜ublic。成員對象會將自身隱藏起來,所以這是一種安全的做法。而且在用戶知道我們準備合成一系列組件時,接口就更容易理解。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);} } ///:~

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

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

總結

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

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