-
重载介绍
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。(顾名思义只识别 方法名与形参)每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表(可以有形参,可以没有形参)。
最常用的地方就是构造器的重载。重载规则(一同一不同:方法名必须一样,形参必须不一样(同一个类里面)):
被重载的方法必须改变参数列表(参数个数或类型不一样)。
被重载的方法可以改变返回类型; 被重载的方法可以改变访问修饰符。
被重载的方法可以声明新的或更广的检查异常。
方法能够在同一个类中或者在一个子类中被重载。
无法以返回值类型作为重载函数的区分标准。 -
错误 代码引例
//此为错误代码实例一
public class OverloaderingTest {
void add(int y,double x) {
System.out.println(x+y);
}
void add(int x,double y) {
System.out.println(x+y);
}
public static void main(String[] args) {
OverloaderingTest a = new OverloaderingTest();
a.add(1, 1.1);
}
}
//此为错误代码实例二
public class OverloaderingTest {
double add(int y,double x) {
System.out.println(x+y);
return x+y;//弱转强
}
void add(int x,double y) {
System.out.println(x+y);
}
public static void main(String[] args) {
OverloaderingTest a = new OverloaderingTest();
a.add(1, 1.1);
}
}
3.正确 代码引例
//此为正确代码实例一
public class OverloaderingTest {
void add(int y,double x+1) {
System.out.println(x+y);
}
void add(double x,double y) {
System.out.println(x+y+2);
}
public static void main(String[] args) {
OverloaderingTest a = new OverloaderingTest();
a.add(1, 1.1);
}
}
//输出为3.1
//此为正确代码实例二
public class OverloaderingTest {
double add(int y,double x) {
System.out.println(x+y+1);
return x+y;//弱转强
}
void add(double x,double y) {
System.out.println(x+y+2);
}
public static void main(String[] args) {
OverloaderingTest a = new OverloaderingTest();
a.add(1, 1.1);
}
}
//输出3.1
//此为正确代码实例三
public class OverloaderingTest {
double add(int y,double x) {
System.out.println(x+y+1);
return x+y;//弱转强
}
void add(double x,double y) {
System.out.println(x+y+2);
}
void add(int x,int y) {
System.out.println(x+y+3);
}
public static void main(String[] args) {
OverloaderingTest a = new OverloaderingTest();
a.add(1, 1);
}
}
//输出为5 调用了void add(int x,int y)
- 总结
> 重载规则如下