先来谈谈:重载(Overloading)
简单的说重载就是在同一个类中,方法名相同,参数列表不同,与返回值无关。
参数列表不同:
1.参数的个数。
2.参数对应的数据类型不同
简单案例:
public class Demo{
public static void main(String[] args) {
System.out.println(sum(10,20));
System.out.println(sum(10,20,30));
}
//求两个数的和
public static int sum(int a,int b){
return a+b;
}
//求三数的和
public static int sum(int a,int b,int c){
return a+b+c;
}
}
再来说说:重写(overriding)
重写:父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。
但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。
方法重写又称方法覆盖。(只能重写父类的非私有方法)
简单举例:
public class Change{
public static void main(String[] args){
Son s = new Son();
s.Speak();
}
}
class Father{
public void Speak(){
System.out.println("Father");
}
}
class Son extends Father{
public void Speak(){
super.Speak();
System.out.println("Son");
}
}
重写的规则:
1.参数列表必须与被重写的方法参数列表一模一样。
2.返回值类型必须与被重写的方法返回值类型一模一样。
3.访问修饰符的权限只能大于或者等于被重写方法的权限(public>protected>default>private)
4.重写的方法不能抛出新的异常,或者比被重写方法范围更广的异常,只能抛出与被重写方法一致或者是其子类的异常。(例如:若父类抛出IOException异常,子类不能抛出Exception异常,只能抛出IOException或者IOException子类的异常 )。
重载的规则:
1.方法名称,参数列表必须相同。
2.可以有不同的访问修饰符。
3.返回值类型可以不同。
4.可以抛出不同的异常。
重写与重载的区别