重写(override)方法的规则:
重写也叫覆盖
1、参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。
2、返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。
3、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
4、重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。例如:
父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常。
而重载的规则:
1、必须具有不同的参数列表;
2、可以有不同的返回类型,只要参数列表不同就可以了;
3、可以有不同的访问修饰符;
4、可以抛出不同的异常;
什么时候用重写、什么时候用重载
java中
“重写”只存在于子类与父类中!当子类中的某一个方法重写了父类的同样方法(出函数体内容不同外,其他都一样---《有种特别的情况,子类的方法返回值是父类方法返回值的子类时且出函数体外其他都相同也算重写,即覆盖》)
“重载”存在于一个类中,当方法名相同,方法参数不同,顺序不同,个数不同时,这种现象才叫重载!注意:返回的不同不能作为判断重载的依据!