什么是多态?
多态是同一个行为具有多个不同表现形式或形态的能力。
多态的优点?
-
消除类型之间的耦合关系
-
可替换性
-
可扩充性
-
接口性
-
灵活性
-
简化性
多态存在的必要条件
1.继承
2.重写
3.父类引用指向子类对象: 例如: Animal one = new Dog();
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。
向上转型:(隐式转型、自动转型):
Animal one = new Dog();
Animal two = new Cat();
父类引用指向子类实例对象
向上转型后,可以调用父类派生给子类的方法和子类重写父类的方法,但不能 调用子类独有的方法。
向下转型:(强制转型):
类型转换正确:
Animal one = new Dog();
Dog two = (Dog)one;
类型转换错误:
Animal three = new Dog();
Cat four = (Cat)three;
子类引用指向父类对象,需要强制转换
转型条件:将一个指向子类对象的父类引用赋值给一个子类的引用
向下转型后,可以调用父类派生给子类的方法和子类重写父类的方法,可以调 用子类独有的方法
关键字 “instanceof”
boolean result = (a instanceof b)
a 是对象,b 是类、接口、数组
a是b的实例化对象,如果a对象直接或间接是b的子类,返回true
a既不是b的实例化对象,也不是b类直接或间接的子类对象,则返回false