JAVA類與類的關係
阿新 • • 發佈:2019-01-01
JAVA類與類之間的關係有實現,繼承,依賴,關聯,聚合,組合,只寫後四項
1:依賴
package rely; /* * 依賴關係,類A當中使用了類B,其中類B是作為類A的方法引數、 方法中的區域性變數、或者靜態方法呼叫 */ class Book{ private String name="<<紅樓夢>>"; public String getName(){ return this.name; } } class People{ public void read(Book book) { System.out.print("讀的書:"+book.getName()); } }
二:關聯
package association; /** 單向關聯表現為:類A當中使用了類B,其中類B是作為類A的成員變數。 雙向關聯表現為:類A當中使用了類B作為成員變數; 同時類B中也使用了類A作為成員變數。 */ class Son{ private String name; Father father=new Father(); public String getName() { return this.name; } public void giveGift(){ System.out.print("送給"+father.getName()+"禮物"); } } class Father { private String name; Son son = new Son(); public String getName(){ return this.name; } public void getGift(){ System.out.println("從"+son.getName()+"獲得禮物"); } }
3:聚合關係
package aggregation; /* * 聚合關係是關聯關係的一種,耦合度強於關聯,他們的程式碼表現是相同的, * 僅僅是在語義上有所區別:關聯關係的物件間是相互獨立的, * 而聚合關係的物件之間存在著包容關係,他們之間是“整體-個體”的相互關係。 */ class Car { private String type; public String getType(){ return this.type; } } class House { private String address; public String getAddress(){ return this.address; } } 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:組合關係
package composition;
/*
* 組合關係:
* 相比於聚合,組合是一種耦合度更強的關聯關係。
* 存在組合關係的類表示“整體-部分”的關聯關係,“整體”負責“部分”的生命週期,
* 他們之間是共生共死的;並且“部分”單獨存在時沒有任何意義。
*/
class Body {
private String name;
public String getName(){
return this.name;
}
}
class Soul {
private String name;
public String getName(){
return this.name;
}
}
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());
}
}