相关推荐
多态
多态(Polymorphism)属于面向对象三大特征之一,是同一个行为具有多个不同表现形式或形态的能力。
它的前提是封装形成独立体,独立体之间存在继承关系,从而产生多态机制
10.1 多态中向上转型和向下转型
1.向上转型:子类型转换为父类型,又被称为自动类型转换。
2.向下转型:父类型转换为子类型,又被称为强制类型转换。
3.在 Java 语言中有这样的一个规定:无论是向上转型还是向下转型,两种类型之间都必须要有继承关系,没有继承关系情况下进行向上转型或向下转型时,编译器都会报错。
例一:
例二:
例一中的代码没有报错?例二中的代码出现报错,原因是a本身就是Cat对象,所以自然可以向下转型为Cat,也理所当然不能转为Dog。a1为 Animal对象,所以它也不能被向下转型为任何子类对象。
注意
①向下转型的前提是父类对象指向的是子类对象(也就是说,在向下转型之前,它得先向上转型)。
②转型只能转型为本类对象。
4.Java中存在多态的三个必要前提条件:
(1)要有继承关系。
(2)要有方法重写。
(3)要有父类引用指向子类对象,也叫向上转型。
10.2 多态的好处和弊端
1.多态的好处:
(1)提高了代码的维护性(继承保证) 。
例如:在父类改一个属性不用每个子类都改属性。
(2)提高代码的扩展性(多态保证)。
例如:方法中使用父类为参数,来实现方法或者属性的调用。
2.多态的弊端:不能使用子类的特有属性和行为。
3.多态的注意事项:
(1)开发中创建对象的时候,用父类引用指向子类对象比较常用。
(2)当作参数时,使用多态最好,因为扩展性强。
小结
通过本节课的学习,我们了解了什么是多态(polymorphic),同时在Java中,存在多态的前提条件为:继承、重写、父类的引用指向子类对象。
同时,我们还了解了多态的好处和弊端:
优点:可维护性高,扩展性高;
弊端:不能使用子类的特有属性和行为。