方法重载的使用与练习

要求: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;
    }
}

猜你喜欢

转载自www.cnblogs.com/KeepCalmAndNeverSayNever/p/10117112.html