什么是多态呢?
多态是指一个程序中同名但不同方法共存的形态。
为什么Java要提出多态机制呢?
Java将万物抽象成类,在复杂的世界中,实现同一个功能会遇到各种各样的情况,所以需要根据实际需要定义不同的方法内容
java提出了怎样的机制实现多态呢?
java提供重载和覆写来实现多态
什么是重载呢?
在一个类中定义了多个同名但是不同参数的方法,称这些方法叫做重载
同名,顾名思义,就是方法名称相同。
不同参数,指的是参数的类型不同或者是参数的个数不同(二者有其一即可构成重载)
ps:参数的顺序不同或者方法的返回值类型不同均不能构成重载
什么是覆写呢?
子类对从父类那里继承过来的方法进行重新定义,参数,方法返回值,方法名均不改变,称这个过程为覆写
ps:
- 如果方法名同但参数不同则构成重载而非覆写
- 如果方法名同,参数同,返回值不同,则编译无法通过
- 子类的访问权限应 >= 父类的访问权限
- 同名的static方法与非static方法之间不能互相覆写
- 父类中被final修饰的方法,在子类中不能被覆写
多态的应用
重载的应用:随着软件的更新,我们需要对功能的实现添加新的参数,那么如何既对原来的功能进行复用,又做到对功能扩充新的参数呢?通过保留旧接口保障原有的程序的稳定,再通过增参重载扩充需求,并且重载的方法除了新增部分以外,可以复用原有的方法
覆写的应用:建立一个抽象类(shape),建立两个具体化子类继承shape,子类对父类中的抽象方法进行覆写。用父类的引用分别指向两个对象进行同一个方法的调用,会产生不同的结果(倘若有很多子类要进行方法调用,则可大大缩减代码)