一、多态概述

image.png
要求:
1、有继承/实现关系;
2、有方法重写;
3、父类的引用指向子类的对象

例:
Animal a = new Cat();

二、多态成员变量、方法的访问特点

image.png
成员变量:
是否可以访问--看左边
具体执行的哪一类的变量--看左边

成员方法(重写的):
是否可以访问--看左边
具体执行的哪一类的方法--看右边

三、多态的弊端

image.png

使用父类作为参数声明,使用子类参与操作:具体如下
image.png
上图的方法可以用Animal的子类Cat Dog的对象来访问:

Cat c = new Cat;
useAnimal(c);//传的是Cat对象 就是Animal a = new Cat();

弊端:不能访问子类的方法

public void useAnimal(Animal a){
    a.fish();//fish()是猫下的方法,不能访问!!XXX
}

四、多态中的转型

只能父类引用转子类
image.png

错误例:

public class Dog extends Animal{
}
public class Cat extends Animal{
}
Public class Test{
    psvm{
    Animal d = new Dog;
    Cat c = (Cat)d;//xxxxxxxxx不能同辈转!!

将输出错误:ClassCastException


MeeWoW
18 声望1 粉丝

加油