重写(Override)
在子类中把父类(基类)中本身有的的方法重写一遍,子类继承了父类原有的方法,所以在方法名,参数列表,返回类型都相同的情况下,对方法体进行修改或者重写。
ps:但是要注意子类函数的访问修饰权限不能少于父类
重载(Overload)
在一个类中,同名方法如果有不同的参数类别则视为重载.重载对返回类型没有要求(相同不相同都行,但是不能通过返回类型是否相同来判断重载)。
总结
Override: 1.发生于父类于子类之间。
2.方法名,参数列表,返回值类型(除子类中的方法的返回值类型是父类中的子类)必须相同。
3.访问修饰符限制一定要大于被重写方法的访问修饰符。
public(可以被所有类访问)>protected(除了其他类,其他都可以访问(不能修饰类,内部类除外)>default(同一个包里的都可以访问)>private(最严格的访问权限,仅同一个类下的可以访问)。
4.重写方法一定不能抛出新的检查异常或者比被重写方法申明中更加宽泛的检查型异常。
public class Father {
public static void main(String[] args) {
Son s = new Son();
s.sayHi();
}
public void sayHi(){
System.out.println("Hi");
}
}
class Son extends Father{
@Override
public void sayHi(){
System.out.println("HiHiHiHiHiHi");
}
}
Overload:1.重载是一个类中多态性的体现。
2.重载要求同名方法的参数列表(参数类型,个数,顺序)不同。
3.重载的时候,返回值的类型可以是相同也可以不同,无法以返回类型作为重载函数的区分标准。
public class Test {
public static void main(String[] args) {
Test a=new Test();
a.niKo();
a.niKo("G2");
}
public void niKo(){
System.out.println("尼公子是2021年top3");
}
public void niKo(String name){
System.out.println("尼公子是G2的大腿"+name);
}
}