Java基础·多态

546 阅读2分钟

相关推荐

Java基础·继承

多态

多态(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中,存在多态的前提条件为:继承、重写、父类的引用指向子类对象。

同时,我们还了解了多态的好处和弊端:

优点:可维护性高,扩展性高;

弊端:不能使用子类的特有属性和行为。