面向对象的三大特性:封装、继承、多态。
1.多态定义
多态是同一个行为具有多个不同表现形式或形态的能力,即同一个接口,使用不同的实例而执行不同操作。
如现实中的例子:动物(Anamal)作为父类(存在eat()方法),子类有大熊猫(Panda),狐狸(Fox)实现eat()方
法,大熊猫的eat()方法是吃竹子,狐狸的eat()方法是吃肉;
Anamal anamal = new Panda();
anamal .eat();
因为 anamal 是 Anamal 的引用,所以调用 anamal 的 eat() 方法时,编译器会去
Anamal 类查找 eat() 方法 。
在编译的时候,编译器使用 Anamal 类中的 eat() 方法验证该语句, 但是在
运行的时候,Java虚拟机(JVM)调用的是 Panda类中的 eat() 方法。
以上整个过程被称为虚拟方法调用,该方法被称为虚拟方法。
2.多态存在的三个必要条件
a.要有继承
b.要有重写
c.父类引用指向子类对象
3.多态的实现方式
a.接口实现
b.继承父类进行方法重写
c.同一个类中进行方法重载。
4.多态的优点
a.可替换性(substitutability)
b.可扩充性(extensibility):多态对代码具有可扩充性
c.简化性(simplicity):多态简化代码编写和修改过程
d.接口性(interface-ability):多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的
e.灵活性(flexibility):在应用中体现了灵活多样的操作,提高了使用效率。