多态
多态需要满足三个条件:
1、继承。
2、重写。
3、父类数据类型的引用指向子类对象。
public void sleep(){
System.out.println("动物在睡觉");
}
public void eat(){
System.out.println("动物在吃饭");
}
public void walk(){
System.out.println("动物在走路");
}
public void walk1(){
System.out.println("动物在走路");
}
}
class UserAction extends BaseAction{
public void sleep(){
System.out.println("猫在睡觉");
}
public void eat(){
System.out.println("猫在吃饭");
}
public void walk(){
System.out.println("猫在走路");
}
public void drinking(){
System.out.println("猫在喝水");
}
}
class Main{
public static void main(String[] args){
BaseAction b = new UserAction();
b.sleep();
b.eat();
b.walk();
//b.drinking();//注释掉,编译报错
}
}
运行结果:
猫在睡觉
猫在吃饭
猫在走路
从代码中可以看出,多态存在弊端,就是不能使用子类特有的属性和方法,在Main类中使用UserAction中的drinking()方法时会编译报错。
如果一定要使用UserAction中的drinking()方法,可以使用使BaseAction强制变回UserAction类型即可。
public static void main(String[] args){
BaseAction b = new UserAction();
b.sleep();
b.eat();
b.walk();
UserAction u = (UserAction)b;
u.drinking();
}
}
运行结果:
猫在睡觉
猫在吃饭
猫在走路
猫在喝水

浙公网安备 33010602011771号