多态:同一个对象拥有多种形态
作用:把不同数据类型进行统一
补充:
把子类对象赋值给父类变量: 向上转型
缺点:屏蔽掉子类中特有的方法
把父类变量转换回子类变量 :向下转型
(向下转型有可能有风险)
java要求向下转型必须写强制类型转换 (转换之后的变量)变量
public class Animal {public void eat() {System.out.println("动物在吃");}}
public class Person {public void feed(Animal a) { //接收到的所有动物都是animala.eat();}}
//猫是一种动物,继承
public class Cat extends Animal{public void eat() {System.out.println("猫喜欢吃鱼");}public void zhua() {System.out.println("猫喜欢抓老鼠");}}
public class Dog extends Animal{public void eat() {System.out.println("狗喜欢吃骨头");}}
public class Spot {public static void main(String[] args) {Animal a1 = new Cat(); //可以把猫当成动物来看,把子类对象赋值给父类的引用:向上转型,但会屏蔽掉子类的特有方法Animal a2 = new Dog();Person p = new Person();p.feed(a1);p.feed(a2);//多态作用:把不同数据类型进行统一(把猫狗转换为动物型)// a1.zhua(); 此时的猫为动物态,不具备抓老鼠特质Cat cc = (Cat)a1; //向下转型cc.zhua(); //猫又可以抓老鼠了} }