父类对象引用子类对象: Animal a=new Cat();
多态中的转型
public class Animal { public void eat(){ System.out.println("动物吃东西"); } } public class Cat extends Animal{ @Override public void eat() { System.out.println("猫吃鱼"); } public void playGame(){ System.out.println("猫捉迷藏"); } } public class test { public static void main(String[] args) { //多态 Animal a=new Cat(); //向上转型 a.eat(); //猫吃鱼 //a.playGame(); 会报错 //创建Cat类的对象 Cat b=(Cat)a; //向下转型,来解决多态不能使用子类特有功能的问题 b.eat(); //猫吃鱼 b.playGame(); //猫捉迷藏 } }
多态转型内存图
1.进入main函数,创建a对象
扫描二维码关注公众号,回复:
8050965 查看本文章
2.执行eat函数(子类)
3.创建Cat类型变量c将原本堆空间的对象地址赋给它.
4.类型转换异常