導航:首頁 > 編程語言 > java類組合

java類組合

發布時間:2022-09-13 02:31:33

java中類的組合和繼承 請詳細敘述這兩種方法

組合類意思是
public class A {

}

public class B{
private A a; //拿A做有元變數
}

繼承是指:

public class A {
public void ddd(){

}
}

public class B extends A {
//它就能通過super.ddd()來拿父類A的方法
}

⑵ JAVA 中集合和組合是一個意思么

composition 是組合,指的是類與類之間的關系,幾種常見的關系有,繼承,組合,關聯,聚合,依賴等...

collections 是集合,是指容器,常見的子類介面有,List,Map。簡單來說,就是用來裝其它東西的,被裝東西可以是基礎類型的數據...

⑶ Java中組合是不是就是在一個類裡面建一個其他類的對象,然後通過這個對象來調用其他類的方法

樓主說的是設計模式吧?你的這個描述更像是外觀模式,而不是組合模式。外觀模式就是對外提供一個統一的介面,在這個介面的實現類裡面創建其它類的對象,然後通過這個對象來調用其他類的方法,這樣做的好處就是,應用人員只需要與一個介面打交道。組合模式是為了屏蔽層次結構中的復雜性,在一個組合類中會有一張表,用來存儲其子節點,當我們調用組合類中的方法時,這個方法就會自動調用其子類的相應方法。具體來說會有一點復雜,不懂可以在看看網上的關於組合類的描寫。

⑷ Java中,組合和繼承的區別

1.組合(has-a)關系可以顯式地獲得被包含類(繼承中稱為父類)的對象,而繼承(is-a)則是隱式地獲得父類的對象,被包含類和父類對應,而組合外部類和子類對應。

2.組合關系在運行期決定,而繼承關系在編譯期就已經決定了。

3.組合是在組合類和被包含類之間的一種松耦合關系,而繼承則是父類和子類之間的一種緊耦合關系。

4.當選擇使用組合關系時,在組合類中包含了外部類的對象,組合類可以調用外部類必須的方法,而使用繼承關系時,父類的所有方法和變數都被子類無條件繼承,子類不能選擇。

5.最重要的一點,使用繼承關系時,可以實現類型的回溯,即用父類變數引用子類對象,這樣便可以實現多態,而組合沒有這個特性。

6.還有一點需要注意,如果你確定復用另外一個類的方法永遠不需要改變時,應該使用組合,因為組合只是簡單地復用被包含類的介面,而繼承除了復用父類的介面外,它甚至還可以覆蓋這些介面,修改父類介面的默認實現,這個特性是組合所不具有的。

7.從邏輯上看,組合最主要地體現的是一種整體和部分的思想,例如在電腦類是由內存類,CPU類,硬碟類等等組成的,而繼承則體現的是一種可以回溯的父子關系,子類也是父類的一個對象。

8.這兩者的區別主要體現在類的抽象階段,在分析類之間的關系時就應該確定是採用組合還是採用繼承。

9.引用網友的一句很經典的話應該更能讓大家分清繼承和組合的區別:組合可以被說成「我請了個老頭在我家裡幹活」 ,繼承則是「我父親在家裡幫我幹活"。

⑸ java 聚合和組合的區別

  1. 聚合(Aggregation)關系是關聯關系的一種,是強的關聯關系。聚合是整體和個體之間的關系。例如,汽車類與引擎類、輪胎類,以及其它的零件類之間的關系便整體和個體的關系。與關聯關系一樣,聚合關系也是通過實例變數實現的。但是關聯關系所涉及的兩個類是處在同一層次上的,而在聚合關系中,兩個類是處在不平等層次上的,一個代表整體,另一個代表部分

  2. 組合(Composition)關系是關聯關系的一種,是比聚合關系強的關系。它要求普通的聚合關系中代表整體的對象負責代表部分對象的生命周期,組合關系是不能共享的。代表整體的對象需要負責保持部分對象和存活,在一些情況下將負責代表部分的對象湮滅掉。代表整體的對象可以將代表部分的對象傳遞給另一個對象,由後者負責此對象的生命周期。換言之,代表部分的對象在每一個時刻只能與一個對象發生組合關系,由後者排他地負責生命周期。部分和整體的生命周期一樣。

  3. 以上關系的耦合度依次增強(關於耦合度的概念將在以後具體討論,這里可以暫時理解為當一個類發生變更時,對其他類造成的影響程度,影響越小則耦合度越弱,影響越大耦合度越強)。由定義我們已經知道,依賴關系實際上是一種比較弱的關聯,聚合是一種比較強的關聯,而組合則是一種更強的關聯,所以籠統的來區分的話,實際上這四種關系、都是關聯關系。

    聚合關系是是一種比較強的關聯關系,java中一般使用成員變數形式實現。對象之間存在著整體與部分的關系。例如上例中


  4. classDriver{
    //使用成員變數形式實現聚合關系
    Carmycar;
    publicvoiddrive(){
    mycar.run();
    }
    }
    假如給上面代碼賦予如下語義:車是一輛私家車,是司機財產的一部分。則相同的代碼即表示聚合關系了。聚合關系一般使用setter方法給成員變數賦值。

    假如賦予如下語義:車是司機的必須有的財產,要想成為一個司機必須要先有輛車,車要是沒了,司機也不想活了。而且司機要是不幹司機了,這個車就砸了,別人誰也別想用。那就表示組合關系了。一般來說,為了表示組合關系,常常會使用構造方法來達到初始化的目的,例如上例中,加上一個以Car為參數的構造方法
  5. publicDriver(Carcar){
    mycar=car;
    }
    所以,關聯、聚合、組合只能配合語義,結合上下文才能夠判斷出來,而只給出一段代碼讓我們判斷是關聯,聚合,還是組合關系,則是無法判斷的。

⑹ java中什麼叫組合

組合就是 A類的對象是B類的成員變數。相當於 A類是B類對象的一個屬性!
組合和繼承都很常見的!

閱讀全文

與java類組合相關的資料

熱點內容
壓縮因子定義 瀏覽:968
cd命令進不了c盤怎麼辦 瀏覽:214
葯業公司招程序員嗎 瀏覽:974
毛選pdf 瀏覽:659
linuxexecl函數 瀏覽:727
程序員異地戀結果 瀏覽:374
剖切的命令 瀏覽:229
干什麼可以賺錢開我的世界伺服器 瀏覽:290
php備案號 瀏覽:990
php視頻水印 瀏覽:167
怎麼追程序員的女生 瀏覽:487
空調外壓縮機電容 瀏覽:79
怎麼將安卓變成win 瀏覽:459
手機文件管理在哪兒新建文件夾 瀏覽:724
加密ts視頻怎麼合並 瀏覽:775
php如何寫app介面 瀏覽:804
宇宙的琴弦pdf 瀏覽:396
js項目提成計算器程序員 瀏覽:944
pdf光子 瀏覽:834
自拍軟體文件夾名稱大全 瀏覽:328