目录
一、多态的含义
在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。
多态通过分离做什么和怎么做,从另一个角度将接口和实现分离开。多态不但能够改善代码的组织结构和可读性,还能够创建可扩展的程序——即无论在项目最初创建时还是在需要添加新功能时都可以“生长”的程序。多态的作用时消除类型之间的耦合关系。它允许将多种类型(从同一基类导出的)视为同一类型来处理,而同一份代码也就可以毫无差别地运行在这些不同类型之上了。多态方法调用允许一种类型表现出与其它相似类型之间的区别,只要它们都是从同一类导出来的。这种区别是根据方法行为的不同而表示出来的,虽然这些方法都不可以通过同一个基类来调用。
Java引用变量有两个类型:一个是编译时类型,它由声明该变量时使用的类型决定。另一个是运行时类型,它由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就可以认为是多态出现了。
二、多态的优点
使用多态,我们可以很好的完成代码的解耦和工作,加强代码的可扩展性,使代码更加灵活,在不改变原有接口方法的情况下简化流程等,总结一下就是:
- 可复用性:
我们在写程序的时候,不必要为每一个子类都创建一个相同的方法或功能,我们只需要对抽象父类进行处理即可。 - 提高扩展性和可维护性:
子类的功能可以被父类的方法或引用变量所调用。
从代码看,我们可以省去很多很多重载的方法。
三、实现多态的条件
- 继承
- 重写
- 父类引用指向子类对象:如:Parent p = new Child();
以上三个必要条件需同时满足,当使用多态的方式去调用方法时,首先必须检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
格式:父类 变量名 = new 子类
变量名.方法名()
public class Dad {
void method() {
System.out.println("我是父亲");
}
}
class Son extends Dad {
@Override