方法重写
子类是父类的延续 + 扩展
延续 : 直接继承下来的
扩展:增强(重写), 新增(新加的)
需要重写的原因:
当存在继承关系的两个类中,如果父类的方法不能满足子类的需求, 按需在子类中重写父类中方法(只有方法才存在重写)
重写的注解:@Override
重写的注意点:
- 重写方法的修饰符一般和父类相同,但至少范围要大于等于父类,比如父类是protected,子类只能是protected或者public
- 重写方法的返回值一般和父类相同,除非,返回值是引用类型时,返回值最多允许修改为父类 返回值类型 的子类
- 方法名和形参列表必须相同 xxx(类型 xx,类型 xx) 必须相同
- 重写方法的异常类型一般和父类相同,异常类型最多允许修改为父类 异常类型 的子类
重写方法的目的是为了多态
注意: 以下都不能被重写
- private 修饰的方法 原因: private是私有方法,子类无法调用, 即使重写了也是子类自己新的特有的方法
- static 修饰的方法 原因: 重写是实现多态的前提,即重写是发生在继承中且是针对非static方法的。 即使重写了也是子类自己新的特有的方法 (语法上看起来重写了,但static是类共有的,运行了也没有多态的效果)
- final 修饰的方法 原因: 无法重写,编译时就会报错。(final修饰变量等同于常量,修饰方法不可重写,修饰类不可继承)