1. 程式人生 > >方法過載的使用與練習

方法過載的使用與練習

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