類的關(guān)系

【重點(diǎn)掌握】:設(shè)計(jì)模式定義、類關(guān)系、抽象封裝具體、面向超類型編程

【重點(diǎn)掌握】:策略模式的參與角色、職責(zé)分配、協(xié)作及代碼實(shí)現(xiàn)。

超類型就是抽象類或接口

1、接口

2、關(guān)聯(lián):類之間的聯(lián)系,如客戶和訂單,每個訂單對應(yīng)特定的客戶,每個客戶對應(yīng)一些特定的訂單,再如籃球隊(duì)員與球隊(duì)之間的關(guān)聯(lián)

理解:關(guān)聯(lián)(Association)關(guān)系是類與類之間的聯(lián)接,它使一個類知道另一個類的屬性和方法。關(guān)聯(lián)可以是雙向的,也可以是單向的。在Java語言中,關(guān)聯(lián)關(guān)系一般使用成員變量來實(shí)現(xiàn)。

關(guān)聯(lián)分為組合和聚合

Public class A {

????Private B b;//從這行代碼顯示A關(guān)聯(lián)B,但不能決定是組合還是聚合關(guān)系,

}

2.1組合:整體與部分間的關(guān)系,不可分的,比如人和人的大腦,比聚合關(guān)系強(qiáng)的關(guān)系。

public class Head

{

? ? private Mouth mouth;

? ? public Head()

? ? {

????????mouth = new Mouth();//類Head對象創(chuàng)建時Mouth對象也創(chuàng)建了

? ? }

}

public class Mouth

{

}

2.2聚合:整體與部分之間是可分離的,比如計(jì)算機(jī)與CPU、公司與員工的關(guān)系等,與關(guān)聯(lián)關(guān)系一樣,聚合關(guān)系也是通過實(shí)例變量實(shí)現(xiàn)的。但是關(guān)聯(lián)關(guān)系所涉及的兩個類是處在同一層次上的,而在聚合關(guān)系中,兩個類是處在不平等層次上的,一個代表整體,另一個代表部分。

Public class A {

????Private B b; //注意這有定義類B在類A中的私有變量

????Public set(B b){

????????This.b=b;}

}

//從這行代碼顯示A類對象創(chuàng)建時,B類對象沒有創(chuàng)建,類比組裝主板A和其上的網(wǎng)卡B,兩者可以分拆,換一個新的網(wǎng)卡。

Main(){

????A a = new A();

????a.set(new B());

}

3.依賴:以類A依賴類B為例,表示類B出現(xiàn)在類A的一個方法中的參數(shù)中、方法體局部變量、或靜態(tài)B方法調(diào)用、返回值。

理解:依賴(Dependency)關(guān)系是類與類之間的聯(lián)接。依賴關(guān)系表示一個類依賴于另一個類的定義。例如,一個人(Person)可以買車(car)和房子(House),Person類依賴于Car類和House類的定義,因?yàn)镻erson類引用了Car和House。與關(guān)聯(lián)不同的是,Person類里并沒有Car和House類型的屬性,Car和House的實(shí)例是以參量的方式傳入到buy()方法中去的。一般而言,依賴關(guān)系在Java語言中體現(xiàn)為局域變量、方法的形參,或者對靜態(tài)方法的調(diào)用。

public class Driver {

????public void drive(Car car) {

????????car.move();

????}

}

public class Car {

????public void move() {

? ? ? ?}

}

4.?泛化關(guān)系(Generalization)也就是繼承關(guān)系

1、子類與父類應(yīng)該完全一致,父類所具有的屬性、操作,子類應(yīng)該都有;

2、子類中除了與父類一致的信息以外,還包括額外的信息;

3、可以使用父類的實(shí)例的地方,也可以使用子類的實(shí)例;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,647評論 19 139
  • 本文首發(fā)于個人博客:Lam's Blog - 談?wù)?3種設(shè)計(jì)模式在Android源碼及項(xiàng)目中的應(yīng)用,文章由Mark...
    格子林ll閱讀 4,774評論 1 105
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,740評論 18 399
  • 如果記憶能夠篩選, 該有多好 有時候, 很想忘記一切, 記不起自己是誰, 忘掉所有的難過, 像個剛出生的孩子一樣。...
    0d8207641433閱讀 241評論 0 0
  • 文/然雪嬋 1 周末和閨蜜曉麗去逛街,晚上搭地鐵回程時,在地鐵上發(fā)現(xiàn)了特別有意思的一件事。 列車中途停站時,一前一...
    然雪嬋閱讀 1,111評論 0 6

友情鏈接更多精彩內(nèi)容