Java如何在代碼體現面向對象和多態(2)-is a(繼承)、has a (關聯)、like a(實現)(什麼時候在類中定義另一個類?)

一、繼承(is a)

Cat is a Anial(貓是一個動物)

凡是能夠滿足is a 的表示“繼承關係”

	A extends B

二、關聯(has a )

	I has a pen//我有一個筆

凡是能夠滿足has a 關係的表示"關聯關係"

關聯關係通常以"屬性"的形式存在。

	A{
		B b;
	}

三、實現(like a )

	Cooker like a FoodMenu//廚師像一個菜單一樣

凡是能夠滿足like a 關係的表示"實現關係"

實現關係通常是:類的實現接口。

	A implements B

四、代碼上的體現

publicclassTest{
publicstaticvoidmain(String[]args){
//實例化廚師
ChinaCookeryinpin=newChinaCooker();
JanpanCookerjunshui=newJanpanCooker();
//實例化顧客
Customerxiaowei=newCustomer(yinpin);
//顧客想吃中國菜

xiaowei.order();
}
}
//菜單接口
interfaceMenu{
voidCaihua();
voidChicken();
}
//顧客
classCustomer{
MenuM;

publicCustomer(){
}

publicCustomer(Menum){
M=m;
}
publicvoidorder(){
M.Caihua();
M.Chicken();
}

}
//中國廚師
classChinaCookerimplementsMenu{
@Override
publicvoidCaihua(){
System.out.println("中國廚師做的菜花");
}

@Override
publicvoidChicken(){
System.out.println("中國廚師做的雞塊");
}
}
//日本廚師
classJanpanCookerimplementsMenu{
@Override
publicvoidCaihua(){
System.out.println("日本廚師做的菜花");
}

@Override
publicvoidChicken(){
System.out.println("日本廚師做的雞塊");
}
}

分析:這段代碼其實就利用了has a 的關係,顧客有菜單,所以在顧客的類中可以聲明一個菜單的屬性,同時也體現了is a 在日本廚師和中國廚師都實現了菜單這個接口。這樣如果再增加一個美國廚師也就不用修改代碼,直接實現菜單接口就可以了,同時,接口的利用也是體現出了多態。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章