方法的重载(Overload)与重写(Override)的区别
一、重载
【1】什么是方法的重载:
方法的重载是指一个类中可以定义多个方法名相同,但参数不同的方法。 调用时,会根据不同的参数自动匹配对应的方法。
注意本质:重载的方法,实际是完全不同的方法,只是名称相同而已!
【2】构成方法重载的条件:
1)不同的含义(参数列表不同):形参类型、形参个数、形参顺序不同
2) 只有返回值不同不构成方法的重载
如:int a(String str){}与 void a(String str){}不构成方法重载
3) 只有形参的名称不同,不构成方法的重载
如:int a(String str){}与int a(String s){}不构成方法重载
4)、可以有不同的访问修饰符;
5)、可以抛出不同的异常;
【3】注意:方法的重载只跟:方法名和形参列表有关,与修饰符,返回值类型无关。
二、重写
【1】什么是重写:
发生在子类和父类中,当子类对父类提供的方法不满意的时候,要对父类的方法进行重写。但要注意子类函数的访问修饰权限不能少于父类的。
【2】重写的规则
1)、参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。
2)、返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。
3)、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
4)、重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。例如:
父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常。
三、两者之间的区别
【1】重载和重写的区别:
重载:在同一个类中,当方法名相同,形参列表不同的时候 多个方法构成了重载。
重写:在不同的类中,子类对父类提供的方法不满意的时候,要对父类的方法进行重写。