方法重載&方法重寫

1、方法重載

  • 被重載的方法必須改變參數列表(參數個數或類型或順序不一樣);
  • 被重載的方法可以改變返回類型;
  • 被重載的方法可以改變訪問修飾符;
  • 被重載的方法可以聲明新的或更廣的檢查異常;
  • 方法能夠在同一個類中或者在一個子類中被重載。
  • 無法以返回值類型作爲重載函數的區分標準。
    protected void fun(int a) {

    }

    protected void fun(int a, int b) {//重載,參數個數不一樣

    }

    protected void fun(long a) {//重載,參數類型不一樣

    }

    private void fun(int a, long b) {//重載,參數類型不一樣,修飾符不一樣

    }
    
    private void fun(long b, int a) {//重載,參數順序不一樣

    }

    protected int fun(int a, int b, int c) {//重載,返回值不一樣
        return 2;
    }

 2、方法重寫

  • 參數列表必須完全與被重寫方法的相同;
  • 返回類型必須完全與被重寫方法的返回類型相同;

 

  • 訪問權限不能比父類中被重寫的方法的訪問權限更低。例如:如果父類的一個方法被聲明爲public,那麼在子類中重寫該方法就不能聲明爲protected
public class ParentClass {

    protected void fun(int a, long b) {

    }

}
public class SonClass extends ParentClass {

//    protected void fun(int a, long b) {//完全一樣是重寫
//
//    }

    public void fun(int a, long b) {//在子類中的修飾符必須>父類中的修飾符權限

    }

}
  • 子類的返回值類型必須要小於或者等於父類的返回值類型。 
  • 父類的成員方法只能被它的子類重寫。
  • 聲明爲final的方法不能被重寫。
  • 聲明爲static的方法不能被重寫,但是能夠被再次聲明
public class ParentClass {

    protected static void fun(int a, long b) {

    }

}

總結:

兩同兩小一大原則:

  1. 兩同:方法名和參數列表相同
  2. 兩小:返回值或聲明異常比父類小(或相同)   
  3. 一大:訪問修飾符比父類的大(或相同)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章