多态
多态:同一个对象拥有多种形态
作用:把不用的数据类型进行统一,让程序具有超强的可扩展性
//猫是一种动物->继承关系
//可以把猫当成动物来看
public class Cat extends Animal{
public void eat(){
System.out.println("猫吃鱼");
}
public void catMouse(){
System.out.println("猫抓老鼠");
}
}
public class Dog extends Animal{
public void eat(){
System.out.println("狗吃骨头");
}
}
public class Person {
public void feed(Animal ani){//接收到的所有的动物都是Animal
ani.eat();
}
// public void feedCat(Cat c){
// c.eat();
// }
// public void feedDog(Dog d){
// d.eat();
// }
// public void feedDaXiang(DaXiang dx){
// dx.eat();
// }
}
public class Animal {
public void eat(){
System.out.println("动物在吃");
}
}
public class Client {
public static void main(String[] args) {
// Cat c=new Cat();
// Dog d=new Dog();
//
// Person p=new Person();
//
// p.feedCat(c);
// p.feedDog(d);
Cat c=new Cat();//创建一只猫
Animal ani1=new Cat();//可以把猫当成动物来看,把子类的对象赋值给父类的引用(变量) 向上转型
Animal ani2=new Dog();
Animal ani3=new DaXiang();
// ani1.catMouse();//站在动物的角度是不能抓老鼠的
// Person p=new Person();
// p.feed(ani1);
// p.feed(ani2);
// p.feed(ani3);
//多态:把不同的数据类型进行统一
//向下转型
Cat cc=(Cat)ani1;
cc.catMouse();
}
}
运行结果:
猫抓老鼠
Process finished with exit code 0
小知识点:
1.把子类的对象赋值给父类的变量->向上转型
缺点:屏蔽掉子类中特有的方法
2.把父类的变量转化回子类的变量->向下转型
向下转型有可能有风险,java要求必须要写强制类型转换
(转换之后的数据类型)变量
(自主学习,侵权可删)
774

被折叠的 条评论
为什么被折叠?



