java 方法的重載、重寫與重構

  • 2020 年 4 月 25 日
  • 筆記

首先我們要知道重載重寫重構的區別

 

重載:指的是在同一個類中,方法名相同,但是參數數量、參數類型或者返回類型不同的方法就叫做重載。

重寫:

  重寫分兩種、第一種的是在子類繼承父類的情況下,通過@Override註解,子類方法名、參數、返回值全部一樣,方法體不一樣的方法就是重寫。

        第二種就是介面實現,實現介面必須實現介面下的所有方法,因為實現方法上也有@Override註解,所以也算是重寫的一種吧。

重構:重構就是在原有的程式碼上,進行優化,使程式碼執行速度更快、或者更簡單易讀。

 

重載的優點:

1、相同的方法名,傳入不同的參數調用的方法就不一樣。 簡單來說,就是你需要調用哪個方法,就傳入重載對應的參數。

  程式碼如下:

 1 public class Protected1 {
 2 
 3     /**
 4      *   調用重載方法
 5      * @param args
 6      */
 7     public static void main(String[] args) {
 8         test1 test = new test1();
 9         // 在這裡我們可以看到,調用的方法名都是一樣的,只是傳入的參數類型與數量不一樣
10         test.Overload();
11         System.out.println(test.Overload("重載2"));
12         test.Overload("重載2",3);
13     }
14 }
15 
16 
17 class test1{
18     
19     public test1() {
20         
21     }
22     // 在這我們可以看到,方法名稱都是一樣的,只是方法中參數類型與數量不一樣
23     public void Overload() {
24         System.err.println("重載1");
25     }
26     
27     public String Overload(String str) {
28         return "重載2";
29     }
30     
31     public void Overload(String str,int i) {
32         System.err.println("重載3");
33     }
34 }

 

執行結果,程式碼複製即可運行

 

 

重寫的優點

  個人觀點,如果是子類繼承父類然後重寫父類方法,和子類寫的方法沒什麼區別,雖然說重寫後子類要使用父類方法可以通過super點父類方法名就可以調用,但是何必要那麼用呢。

    但是介面就不一樣了,一個實現類可以實現多個介面,增強類的重用性和復用性,擴展性;話不多說,直接看程式碼

public class Protected1 extends test1{

    // 這裡調用父類方法,我們可以看到,不用new 直接就可以使用了
    public void test() {
        // 在這裡我們可以看到,調用的方法名都是一樣的,只是傳入的參數類型與數量不一樣
        super.Overload();  // 利用super可以調用父類方法
        Overload();// 重寫方法之後調用的就是重寫方法
        System.out.println(Overload("重載2"));
        Overload("重載2",3);
    }
    
    //重寫之後的方法
    @Override
    public void Overload() {
        System.err.println("重寫之後的方法");
    }
    
    public static void main(String[] args) {
        Protected1 p = new Protected1();
        p.test();
    }
}

class test1{
    // 在這我們可以看到,方法名稱都是一樣的,只是方法中參數類型與數量不一樣
    public void Overload() {
        System.err.println("重載1");
    }
    
    public String Overload(String str) {
        return "重載2";
    }
    
    public void Overload(String str,int i) {
        System.err.println("重載3");
    }
    
}