一、继承(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 在日本厨师和中国厨师都实现了菜单这个接口。这样如果再增加一个美国厨师也就不用修改代码,直接实现菜单接口就可以了,同时,接口的利用也是体现出了多态。