多态
多态是同一个行为具有多个不同表现形式或形态的能力;
多态就是同一个接口,使用不同的实例而执行不同的操作;
多态性是对象多种表现形式的体现。
形象示例:
1.1多态的优点
消除类型之间的耦合关系
可替换性
可扩充性
接口性
灵活性
简化性
1.2多态的三个必要条件
继承
重写
父类引用指向子类对象
注意:当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
1.3哪里用到多态
方法的重写和重载
override(重写)
1、方法名、参数、返回类型相同。
2、子类方法不能缩小父类方法的访问权限。
3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
4、存在于父类和子类之间。
5、方法被定义为final不能被重写。
overload(重载)
1、方法名相同,参数类型、个数、顺序至少有一个不相同。
2、不能重载只有返回值不同的方法名。
3、存在于父类和子类、同类中。
总结以下几点:
一、使用父类类型的引用指向子类的对象;
二、该引用只能调用父类中定义的方法和变量;
三、如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;(动态连接、动态调用);
四、变量不能被重写(覆盖),"重写"的概念只针对方法,如果在子类中"重写"了父类中的变量,那么在编译时会报错。