1,定义:在子类中可以根据需要对从父类中继承来的方法进行改造,
也称为方法的重置、覆盖。在程序执行时,子类的方法将覆盖父类的方法。
2,当子类调用父类同名同参的方法时,实际执行的是子类重写的方法
3,重写的规定:
方法的声明:
权限修饰符 返回值类型 方法名(形参列表) throws 异常的类型{}
约定俗成:子类中为重写的方法,父类中为被重写的方法
3.1,重写和被重写的方法名和形参列表相同
3.2,重写的权限修饰符不小于父类中被重写的权限修饰符
特殊:子类不能重写父类中private的方法
3.3,返回值类型:
- 如果父类中为void 则子类重写的返回值类型也只能是void
- 父类中返回值类型为A类型,则子类重写的可以是A类或A类的子类
- 父类中如果是基本数据类型(double),则子类的返回值类型只能是相同的基本数据类型(double)
- 子类重写方法的异常类型不大于父类抛出的异常类型
子类和父类中同名同参数的方法,要么都是非static的(考虑重写),要么都是static(不可以被重写)
面试题:方法的重载与重写
代码:day12-Person-Student-PersonTest