1. 程式人生 > >JAVA類與類的關係

JAVA類與類的關係

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());  
   }  
}