1. 程式人生 > >Java中方法的過載和重寫的區別

Java中方法的過載和重寫的區別

一、方法的過載
在同一個類中,方法名相同引數列表不同的方法之間構造過載關係。

方法過載的主要形式:
①引數的個數不同
②引數的型別不同
③引數的順序不同

判斷方法是否過載的核心:判斷呼叫方法能否加以區分。
參考:java.io.PrintStream類中print()和println()方法。

方法過載的意義在於:呼叫者只需要記住一個方法名就可以呼叫各種不同的版本,從而實現多種型別屬性的處理。

方法過載案例

public class TestOverload{

    void show(){
        System.out.println("show()");
    }   
    //可以構成過載,體現在引數的個數不同
void show(int i){ System.out.println("show(int)"); } //可以構成過載,體現在引數的型別不同 void show(double d){ System.out.println("show(double)"); } /* 能否構成過載的本質:呼叫能否區分 ,與形參變數名無關 void show(double i){ System.out.println("show(double)"); } */ /* 方法的過載與方法的返回值型別無關 int show(double d){ System.out.println("show(double)"); } */
void show(int i, double d){ System.out.println("show(int, double)"); } //體現在引數的順序不同 void show(double d, int i){ System.out.println("show(double, int)"); } public static void main(String[] args){ TestOverload to = new TestOverload(); to.show(); to.show(66
); to.show(3.14); to.show(66, 3.14); to.show(3.14, 66); } }

二、方法的重寫
當父類中繼承下來的方法不足以滿足子類需求時,則需要在子類中重新寫一個與父類中一模一樣(方法名相同、引數列表相同、返回值型別相同)的方法,叫做方法的重寫/覆蓋。

方法重寫的原則:
1、相同的方法名稱,相同的引數列表,相同的返回值型別或者返回子類。
2、訪問許可權丌能變小,可以變大。
3、不能丟擲更大的異常。
在子類重寫的方法中,可以通過super關鍵字呼叫父類的“原始”方法。
static的方法重寫以後還是static的。

@Override 標註,用於明確告訴編譯器下面的方法是對父類中方法的重寫,若沒有構成重寫則報錯