欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java類之間的關系圖_動力節(jié)點Java學院整理

 更新時間:2017年08月08日 10:44:54   作者:zhengzhb  
在Java以及其他的面向對象設計模式中,類與類之間主要有6種關系,他們分別是:依賴、關聯(lián)、聚合、組合、繼承、實現(xiàn)。他們的耦合度依次增強,有興趣的可以了解一下

Java類之間的關系圖

在Java以及其他的面向對象設計模式中,類與類之間主要有6種關系,他們分別是:依賴、關聯(lián)、聚合、組合、繼承、實現(xiàn)。他們的耦合度依次增強。

1. 依賴(Dependence) 

依賴關系的定義為:對于兩個相對獨立的對象,當一個對象負責構造另一個對象的實例,或者依賴另一個對象的服務時,這兩個對象之間主要體現(xiàn)為依賴關系。定義比較晦澀難懂,但在java中的表現(xiàn)還是比較直觀的:類A當中使用了類B,其中類B是作為類A的方法參數(shù)、方法中的局部變量、或者靜態(tài)方法調用。類上面的圖例中:People類依賴于Book類和Food類,Book類和Food類是作為類中方法的參數(shù)形式出現(xiàn)在People類中的。

代碼樣例:

public class People{ 
  //Book作為read方法的形參 
   public void read(Book book){ 
    System.out.println(“讀的書是”+book.getName()); 
  } 
} 

2.關聯(lián)(Association)、

單向關聯(lián):

 

雙向關聯(lián):

對于兩個相對獨立的對象,當一個對象的實例與另一個對象的一些特定實例存在固定的對應關系時,這兩個對象之間為關聯(lián)關系。關聯(lián)關系分為單向關聯(lián)和雙向關聯(lián)。在java中,單向關聯(lián)表現(xiàn)為:類A當中使用了類B,其中類B是作為類A的成員變量。雙向關聯(lián)表現(xiàn)為:類A當中使用了類B作為成員變量;同時類B中也使用了類A作為成員變量。

代碼樣例:

public class Son{ 
  //關聯(lián)關系中作為成員變量的類一般會在類中賦值 
  Father father = new Father(); 
  public void getGift(){ 
    System.out.println(“從”+father.getName()+”獲得禮物”); 
  } 
} 
 
public class Father{ 
  Son son = new Son(); 
  public void giveGift(){ 
    System.out.println(“送給”+son.getName()+“禮物”); 
  } 
} 

3.聚合(Aggregation)

聚合關系是關聯(lián)關系的一種,耦合度強于關聯(lián),他們的代碼表現(xiàn)是相同的,僅僅是在語義上有所區(qū)別:關聯(lián)關系的對象間是相互獨立的,而聚合關系的對象之間存在著包容關系,他們之間是“整體-個體”的相互關系。

代碼樣例:

public class People{ 
  Car car; 
  House house;  
  //聚合關系中作為成員變量的類一般使用set方法賦值 
   public void setCar(Car car){ 
    This.car = car; 
  } 
  public void setHouse(House house){ 
    This.house = house; 
  } 
 
  public void driver(){ 
    System.out.println(“車的型號:”+car.getType()); 
  } 
  public void sleep(){ 
    System.out.println(“我在房子里睡覺:”+house.getAddress()); 
  } 
} 

4.組合(Composition)

相比于聚合,組合是一種耦合度更強的關聯(lián)關系。存在組合關系的類表示“整體-部分”的關聯(lián)關系,“整體”負責“部分”的生命周期,他們之間是共生共死的;并且“部分”單獨存在時沒有任何意義。在下圖的例子中,People與Soul、Body之間是組合關系,當人的生命周期開始時,必須同時有靈魂和肉體;當人的生命周期結束時,靈魂肉體隨之消亡;無論是靈魂還是肉體,都不能單獨存在,他們必須作為人的組成部分存在。

Public class People{ 
  Soul soul; 
  Body body;  
  //組合關系中的成員變量一般會在構造方法中賦值 
   Public People(Soul soul, Body body){  
    This.soul = soul; 
    This.body = body; 
  } 
 
  Public void study(){ 
    System.out.println(“學習要用靈魂”+soul.getName()); 
  } 
  Public void eat(){ 
    System.out.println(“吃飯用身體:”+body.getName()); 
  } 
} 

5.繼承(Generalization)

        繼承表示類與類(或者接口與接口)之間的父子關系。在java中,用關鍵字extends表示繼承關系。UML圖例中,繼承關系用實線+空心箭頭表示,箭頭指向父類。

6.實現(xiàn)(Implementation)

表示一個類實現(xiàn)一個或多個接口的方法。接口定義好操作的集合,由實現(xiàn)類去完成接口的具體操作。在java中使用implements表示。UML圖例中,實現(xiàn)關系用虛線+空心箭頭表示,箭頭指向接口。

在java中繼承使用extends關鍵字,實現(xiàn)使用implements關鍵字,很直觀。就不代碼演示了。

相關文章

  • MyBatisPuls多數(shù)據源操作數(shù)據源偶爾報錯問題

    MyBatisPuls多數(shù)據源操作數(shù)據源偶爾報錯問題

    這篇文章主要介紹了MyBatisPuls多數(shù)據源操作數(shù)據源偶爾報錯問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Java中Map實現(xiàn)線程安全的3種方式

    Java中Map實現(xiàn)線程安全的3種方式

    本文主要介紹了Java中Map實現(xiàn)線程安全的3種方式,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • AQS同步組件Semaphore信號量案例剖析

    AQS同步組件Semaphore信號量案例剖析

    這篇文章主要為大家介紹了AQS同步組件Semaphore信號量案例剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • SpringBoot集成tika實現(xiàn)word轉html的操作代碼

    SpringBoot集成tika實現(xiàn)word轉html的操作代碼

    Tika是一個內容分析工具,自帶全面的parser工具類,能解析基本所有常見格式的文件,得到文件的metadata,content等內容,返回格式化信息,本文給大家介紹了SpringBoot集成tika實現(xiàn)word轉html的操作,需要的朋友可以參考下
    2024-06-06
  • Java設計模式之java解釋器模式詳解

    Java設計模式之java解釋器模式詳解

    這篇文章主要介紹了Java設計模式之解釋器模式定義與用法,結合具體實例形式詳細分析了Java解釋器模式的概念、原理、定義及相關操作技巧,需要的朋友可以參考下
    2021-09-09
  • JAVA對稱加密算法PBE定義與用法實例分析

    JAVA對稱加密算法PBE定義與用法實例分析

    這篇文章主要介紹了JAVA對稱加密算法PBE定義與用法,結合實例形式分析了JAVA對稱加密算法PBE的概念、原理、定義及使用方法,需要的朋友可以參考下
    2019-09-09
  • 在SpringBoot中實現(xiàn)一個訂單號生成系統(tǒng)的示例代碼

    在SpringBoot中實現(xiàn)一個訂單號生成系統(tǒng)的示例代碼

    在Spring Boot中設計一個訂單號生成系統(tǒng),主要考慮到生成的訂單號需要滿足的幾個要求:唯一性、可擴展性、以及可能的業(yè)務相關性,本文給大家介紹了幾種常見的解決方案及相應的示例代碼,需要的朋友可以參考下
    2024-02-02
  • Java 入門圖形用戶界面設計之復選框

    Java 入門圖形用戶界面設計之復選框

    圖形界面(簡稱GUI)是指采用圖形方式顯示的計算機操作用戶界面。與早期計算機使用的命令行界面相比,圖形界面對于用戶來說在視覺上更易于接受,本篇精講Java語言中關于圖形用戶界面的復選框
    2022-02-02
  • Java實現(xiàn)基礎銀行ATM系統(tǒng)

    Java實現(xiàn)基礎銀行ATM系統(tǒng)

    這篇文章主要為大家詳細介紹了Java實現(xiàn)基礎銀行ATM系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Java?實戰(zhàn)范例之校園二手市場系統(tǒng)的實現(xiàn)

    Java?實戰(zhàn)范例之校園二手市場系統(tǒng)的實現(xiàn)

    讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+mysql+maven+tomcat實現(xiàn)一個校園二手市場系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2021-11-11

最新評論