1.多态:
1.1 什么是多态?
父类引用子类对象
父类和子类同名的覆盖方法
通过父类引用调用重写的方法的时候,这就是多态
多态的核心:类的调用者,不必关心对象的具体类型
1.2多态发生的前提
向上转型:
父类的引用指向子类对象
向上转型之后:通过父类的引用,只能访问父类的属性和方法
向上转型发生的时机:
直接赋值
传参
返回值
重写(复写 覆盖) :override
方法名相同
参数类型相同
返回值相同
发生在不同的类中,继承
重写的注意事项:
需要重写的方法,不能是被final修饰的,他是密封方法不能重写
私有的方法不能够被重写
被重写的方法,子类当中的访问修饰限定符大于等于父类的
static修饰的静态方法不能被重写
重载:overlode
方法名相同
参数类型不同
返回值不做要求
面试:重写,重载的区别
1.3 运行时绑定:(动态绑定)
前提:
父类引用子类对象,同时通过父类引用调用同名的覆盖方法,
此时就会发生动态绑定
1.4向下转型;
子类的引用指向父类对象
不安全,很少使用向下转型
classCastException:类型转换异常
预防这种情况发生;
A instanceof B:判断A是不是B的实例
在构造器当中可以发生动态绑定
2.多态的优点
封装:
对于类的调用者,不需要知道具体的实现细节,你只管调用公有的方法
使用多态的好处:
多态能让类的调用者连这类的类型都不必知道是什么,只需要知道这个对象具有某个方法即可
降低了圈复杂度
可扩展能力强