27.Java基础_多态

父类对象引用子类对象: 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对象

2.执行eat函数(子类)

3.创建Cat类型变量c将原本堆空间的对象地址赋给它.

4.类型转换异常

原文地址:https://www.cnblogs.com/NiBosS/p/11972616.html