一、重写简介
1.子类重新写父类的方法,相当于覆盖父类的方法,自己编写替换掉之前的。
2.条件:
(1)重写是在子类继承父类的情况下使用
(2)子类的方法名称必须和父类相同
(3)方法的参数类型、个数、顺序要一致
(4)返回的参数类型必须等于父类返回类型(子类返回的类型小于父类的返回类型)
(5)访问修饰符必须不小于父类中的访问修饰符
(6)子类中重写的异常不能抛出比父类更多的异常
3.规范使用Override
public class Father{ int money=500; public void fatherDo(){ System.out.println("父类的方法"); } }
public class Son extends Father{ int money=300; @Override public void fatherDo(){ System.out.println("重写父类的方法"); } }
4.关于2中的(4)
(1)这里返回类型之间的大小指的是,类的继承关系的顺序。父类大于子类。而非数据类型的大小。
(2)需要注意的是八大基本数据类型与其他引用类型应该分开讨论
5.关于2中的(5)
1.需要注意,如果父类中的方法为私有类型(private)那么是无法重写的。私有方法只有父类自身可以使用,子类无法调用。
2.私有方法只有父类自身可以使用,子类无法调用。如果子类写一个一样方法名(包括参数)的方法,那么就不要使用@override,因为当前不是重写,而是相当于写一个新的方法。
二、方法重写(Override)和方法重载(Overload)的区别
1、方法重载Overload关注当前类中的方法,而方法重写是关注子类与父类(继承)。
2、方法重载Overload中方法名称相同,但是参数个数、类型、顺序不同。在方法重写Override中方法名称、参数个数、类型、顺序必须相同。
3、方法重载Overload中不需要关注返回类型,但是在方法重写Override中子类的返回类型必须与父类相同(子类返回的类型小于父类的返回类型)。
4、方法重载Overload中不需要关注访问权限修饰符,但是在方法重写Override中子类的访问权限修饰符必须等于或者增大,不能缩小。