多态
什么是多态?
指的是事物的多种形态。
例如:猫是一只动物。猫是一只猫。
----------------------------------------------
多态的前提条件
要有继承或实现的关系
要有方法重写
要有父类引用指向子类对象
----------------------------------------------
多态的成员访问特点
成员变量:编译看父类、运行看父类
成员方法:编译看父类、运行看子类
----------------------------------------------
多态的好处和弊端
好处:提高代码的扩展性和维护性
弊端:无法使用子类特有的成员
----------------------------------------------
多态的使用场景
可以作为方法的参数和返回值来使用。可以提高代码的扩展性。
----------------------------------------------
多态:
main {
Dog d = new Dog();
method(d);
Cat c = new Cat();
method(c);
}
public static void method(Animal a) {
a.eat();
}
多态的转型
向上转型:父类引用子类对象
向下转型:由父类引用转成一个对应的真实的子类对象
格式:
目标对象类型 对象名 = (目标对象类型) 被转换的引用
注意事项:一定要确保转换的类型相同。否则会发生类型转换异常:ClasCatException
关键字:instanceof
用于判断左边的引用是否是右边的对象类型
main {
Animal a = new Dog();
Dog d = new Dog();
method(d);
Cat c = new Cat();
method(c);
}
public static void method(Animal a) {
a.eat();
if(a instanceof Dog) {
Dog d = (Dog)a;
d.lookHome();
}else if (a instanceof Cat) {
Cat c = (Cat)a;
c.catchMouse();
}
}