方法重载的使用与练习
要求: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; } }