目录
方法覆盖 Override 也叫做方法重写 Overwrite
1.为什么使用方法覆盖?
假设A类继承B类,但B类中有个方法对A类来说不太合适,那么A类就要重写这个方法,重写之后就相当于把之前继承过来的方法覆盖掉了。当A类调用这个方法,一定是执行重写后的。
2.什么条件满足方法覆盖?
(1)两个类要有继承关系
(2)重写之后的方法和重写之前的方法必须满足下面的条件
返回值类型:对于基本数据类型来说,要相同
对于引用数据类型来说,可以相同,
覆盖之后,返回值类型也可以是父类对应的子类型
方法名:相同
形式参数列表:相同(个数相同,顺序相同,类型相同)
(3)访问权限可以更高,但不能更低
(4)抛出异常可以更少,但不能更多
3.方法覆盖注意事项:
(1)方法覆盖与方法有关,与属性无关
(2)方法覆盖与实例方法有关,和静态方法无关
(3)方法覆盖与实例方法有关,和实例变量无关
(4)私有方法和构造方法无法被继承,所以无法方法覆盖
多态 Polymorphism
1.向上转型(子类型引用转型为父类型引用)
2.向下转型(父类型引用转换成子类型引用)
3.无论是向上转型还是向下转型,都必须具有继承关系才行
4.多态:多种形态,编译的时候是一种形态,运行的时候是另一种形态
5.多态指的是:父类型引用指向子类型对象
(1)编译阶段绑定的是父类里的方法,这叫做静态绑定
(2)运行阶段绑定的是子类里的方法,这叫做动态绑定
(3)这和方法覆盖联合起来使用才有意义
多态有什么作用?
降低程序耦合度,提高扩展力