方法重载(overlode)
定义:在同一个类中定义的多个满足一定要求的同名方法就叫方法重载。
要求:
方法与方法之间的名称相同,形参列表不同,与返回值类型无关。
作用:
方法重载通常命名一组功能相似的方法,利用方法重载可以使用同一个方法名对这些方法命名,对于程序的可读性有很大好处。在编译期间,编译器可以根据实参列表找到唯一与之对应的方法。
举例:
public class Test {
public void show(int a) {
System.out.println("带有一个参数的方法");
}
public void show(int... a) {
System.out.println("带有可变参数的方法");
}
public static void main(String[] args) {
Test m1 = new Test();
//public void show(int... a)
m1.show();
//public void show(int a)
m1.show(6);//优先调用参数匹配的方法
//public void show(int... a)
m1.show(new int[]{5,7,9,1});
//public void show(int... a)
m1.show(1,2,3,4);
}
}
方法覆写(overrride)
定义:在继承的基础上如果子类与父类定义了完全相同的方法就叫做方法覆写。
要求:
1.相同指的是:返回值类型相同,方法名相同,方法的形参列表(个数和类型)也相同。与方法体无关。
2.子类的方法修饰符不能小于父类的方法修饰符。
3.子类和父类方法都必须同为static或者非static。
4.若父类方法抛异常,则子类方法抛的异常类型不能大于父类。
注意:在进行方法覆写的时候,有明确的要求:被覆写不能够拥有比父类更为严格的访问控制权限。
现在已经接触了三种访问控制权限:private<default< protected <public。
那么也就意味着如果父类使用public进行方法声明,那么子类必须也使用public;
如果父类使用default,那么子类可以使用default或者public。
方法重载与方法覆写的区别
注意:被final修饰的方法不能被覆写,但被final修饰的方法可以被重载。