*/
class Person {
public void eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
}
class Girl extends Person {
public void eat(){
System.out.println("女生 吃饭少");
}
public void sleep(){
System.out.println("女生 睡觉早");
}
public void goShopping(){
System.out.println("带着男朋友逛商场");
}
}
class Boy extends Person{
public void eat(){
System.out.println("男生 吃饭多");
}
public void sleep(){
System.out.println("男生 睡觉晚");
}
}
class Other extends Person{
public void eat(){
System.out.println("other 吃饭");
}
public void sleep(){
System.out.println("other 睡觉");
}
}
class DuoTaiDemo5 {
public static void main(String[] args) {
/*
Girl g = new Girl();
g.eat();
g.sleep();
Girl g2 = new Girl();
g2.eat();
g2.sleep();
*/
Girl g3 = new Girl();
girlMethod(g3);
Boy b = new Boy();
boyMethod(b);
Other o = new Other();
otherMethod(o);
//------------------------
//多态的方式
Person g4 = new Girl();
personMethod(g4);
Person b2 = new Boy();
personMethod(b2);
Person o2 = new Other();
personMethod(o2);
//------------------------
//多态的弊端
Girl g5 = new Girl();
g5.goShopping();
Person g6 = new Girl();
g6.goShopping();
}
//多态方式的方法
public static void personMethod( Person p ){
p.eat();
p.sleep();
}
//其他人方法
public static void otherMethod( Other o ){
o.eat();
o.sleep();
}
//男生方法
public static void boyMethod( Boy b ){
b.eat();
b.sleep();
}
//女生方法
public static void girlMethod( Girl g ){
g.eat();
g.sleep();
}
}
18-多态的弊端
| 父类不能访问子类特有方法
19-多态的案例(向上转型、向下转型)
| 向上转型: 提高了程序的扩展性
Person g = new Girl();
| 向下转型:为了使用子类的特有方法
Girl girl = (Girl)g;
/*
多态的案例
向上转型: 提高了程序的扩展性
Person p = new UltraMan();
子类 转型 父类使用
小 --> 大 隐式转换 自动类型提升