Java中方法的過載和重寫的區別
阿新 • • 發佈:2018-12-31
一、方法的過載
在同一個類中,方法名相同引數列表不同的方法之間構造過載關係。
方法過載的主要形式:
①引數的個數不同
②引數的型別不同
③引數的順序不同
判斷方法是否過載的核心:判斷呼叫方法能否加以區分。
參考: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 標註,用於明確告訴編譯器下面的方法是對父類中方法的重寫,若沒有構成重寫則報錯