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

歡迎訪問 生活随笔!

生活随笔

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

java

java 中组合与复用_Java 代码复用(组合与继承)

發布時間:2024/4/13 java 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 中组合与复用_Java 代码复用(组合与继承) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java中的類都是圍繞著類進行的。可以通過創建新類來復用代碼,而不必從頭編寫。可以使用別人已經開發并調試好的類。此方法使用的竅門在于使用類而不破壞現有的程序代碼。達到這一目的的方法有兩種:

第一種方法非常直觀:在新類中創建現有類的對象,通過現有類的對象調用其中的成員,來達到復用代碼的目的。由于新類是由現有類的對象所組成的,所以這種方式稱為組合。該方式只是復用了現有程序的代碼,而并非它的形式。

第二種方法則更細致一些,它按照現有類的類型來創建新類。在新類中無需改變現自己的形式,而是采用現有類的形式并在其中添加代碼。這種方式稱為繼承,而且編譯器可以完成大部分工作。繼承是面向對象程序設計的基石之一。

組合和繼承之間的選擇:

組合和繼承都允許在新類中放置子對象,組合是顯式的這樣做,而繼承則是隱式的這樣做。二者之間的區別何在,以及怎樣選擇呢?

組合技術通常用于想在新類中使用現有類的功能而非它的接口的形式。即,在新類中嵌入某個對象,讓其實現所需要的功能,但新類用戶看到的只是為新類所定義的接口,而非嵌入對象的接口。為取得此效果,需要在新類中嵌入一個現有類的private對象。

有時,也許類的用戶直接訪問類的組成部分是極具意義的;也就是說,將成員對象聲明為public。如果成員對象自身都隱藏了具體的實現,那么這樣做是安全的。當用戶能夠了解到你正在組裝一組部件時,會使得端口更加易于理解。car對象即為一個很好的例子:

//發動機

class Engine {

public void start(){}

public void stop(){}

}

//車輪

class Wheel {

public void start(){}

public void stop(){}

}

//車門

class Door {

public void open(){}

public void close(){}

}

class Car {

Engine engine=new Engine();

Wheel [] wheel =new Wheel [4];

Door[] door=new Door[4];

pulbic void run(){

//具體實現

}

} ????? 上面的例子只是我們分析問題的一部分,不是具體的底層實現,所以我們使Car中的成員聲明為public,這將有助于客戶端程序員了解怎樣去使用類,而且也降低了類開發者所面臨的代碼復雜度。但務必要記住,這僅僅只是一個特例,一般情況下應該使域成為private。

在繼承的時候,使用某個現有類,并開發出它的一個特殊版本。通常,這意味著你在使用一個通用類,并為了某種特殊需要而將其特殊化。略微思考一下就會發現,用一個"交通工具"對象去構成一部"車子"是毫無意義的,因為"車子"不包括"交通工具","車子"僅僅是"交通工具"的一種(is-a)。is-a(是一個)用來表示繼承關系,而has-a(有一個)用來表示組合關系。

在面向對象中編程中,生成和使用程序代碼最有可能采用的方法就是直接將數據和方法包裝進一個類中,并使用該類的對像。也可以使用組合技術使用現有類來開發新的類。而繼承技術其實是不太常用的。盡管我們在學習OOP的過程中多次強調繼承,但這不意味著要盡可能的使用它。相反,應當謹慎使用這一技術,使其使用場合僅限于你確信該使用這一技術的情況下。那到底該使用組合還是繼承?一個最清晰的判斷方法就是問一問你自己是否要從新類型向基類向上轉型。需要的話繼承則是必須的,如果不需那應當好好考慮是否使用繼承。

總結

以上是生活随笔為你收集整理的java 中组合与复用_Java 代码复用(组合与继承)的全部內容,希望文章能夠幫你解決所遇到的問題。

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