要求:1.同一个类中 2.方法名必须相同(如下列代码中的setSum)
3.方法的参数列表(下述中getSum之后括号中的东西)不同(Ⅰ.参数的个数不同(setSum之后的括号里定义的参数的数目不一样)
Ⅱ.参数类型不同(setSum后面的括号中定义的类型有些是int有些是double这个类型不同),这些里面只要有一个不同就是重载
Ⅲ.方法的重载与方法的返回值类型没有关系(虽然(4)方法定义的是void类型,但是还是和(1)(2)(3)是重载,也就是说
setSum之前的方法类型无论是什么样,只要后面的符合上述条例都是重载)
public class TestOverload {
//定义两个int变量的和(1)
public int getSum(int i,int j){
return i+j;
}
//和上面的方法名不同,不是重载,虽然可能输出的值相同,但也不是同一个方法
public int getSum1(int i,int j){
return i+j;
}
//定义三个int变量的和(2)
public int getSum(int i,int j,int k){
return i+j+k;
}
//虽然int变成了void,但是和上面的方法是同一个方法
public void getSum(int i,int j,int k){
System.out.println(i+j+k);
}
//定义两个double型数据的和(3)
public double setSum(double i,double j){
return i+j;
}
//定义三个double型数组的和(4)
public void setSum(double i,double j,double k){
System.out.println(i+j+k);
}
/*也可以是public double setSum(double i,double j,double k){
return i+j+k;
}但是为了了解重载的使用,就采用了上述方法*/
//以下两个方法虽然只是变量值类型的顺序换了一下,但是符合要求,也构成重载
public void method1(String str,int i){
}
public void method1(int i,String str){
}
}
编写程序:定义三个重载方法并调用,方法名为mOL
三个方法分别接收一个int参数、两个int参数、一个字符串参数。分别执行平方运算并执行结果
相乘并输出结果,输出字符串信息
在主类main()方法中分别用参数区别调用三个方法
public class TestOverload {
public static void main(String[] args) {
TestOverload t=new TestOverload();
t.mOL(2);
t.mOL(2,5);
t.mOL("哈哈");
}
public void mOL(int i){
int i1=i*i;
System.out.println(i1);
}
public void mOL(int i,int j){
int i1=i*j;
System.out.println(i1);
}
public void mOL(String str){
System.out.println(str);
}
}
重载输出可以自动能识别调用的是哪个方法
定义三个重载方法max()
第一个方法求两个int值中的最大值
第二个方法求两个double中的最大值
第三个方法求三个double中的最大值,并且分别调用三个方法
public class TestOverload {
public static void main(String[] args) {
TestOverload t=new TestOverload();
int i1=t.max(3,4);
System.out.println("两个int中的最大值是:"+i1);
double i2=t.max(3.1,3.2);
System.out.println("两个double中的最大值是:"+i2);
double i3=t.max(3.1,3.2,3.3);
System.out.println("三个double中的最大值是:"+i3);
}
public int max(int i,int j){
int a=(i>j)?i:j;
return a;
}
public double max(double i,double j){
double a=(i>j)?i:j;
return a;
}
public double max(double i,double j,double k){
double a=(max(i,j)>k)?max(i,j):k;//调用上一个方法
return a;
}
}