Java組合設計模式
阿新 • • 發佈:2019-02-08
在繼承的子類中,可以把父類中允許的訪問控制成員變數和方法進行再次的改造,這在一定程度破壞了Java面向物件的封裝。而且在Java中繼承是一種單繼承的存在。
如果需要在一個類中,獲取其他類(一個或多個)的相關方法,我們可以通過組合的方式,把需要的方法整合到當前類中,需要的方法是呼叫類的相關方法。
我們通過在當前類中定義其他類的物件作為當前類的成員變數去使用。需要定義什麼方法就呼叫其他類的什麼方法。而不是像繼承一樣,一股腦的把父類所有的可訪問屬性和方法都獲取到當前類中。
public class Animal {
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
public void fun1() {
System.out.println("fun1" );
}
}
public class Bird {
private Animal an;
public Bird(Animal an) {
this.an = an;
}
public void fun1() {
an.fun1();
}
}