如何理解java中重寫,過載與多型(整理)

2021-06-16 21:11:28 字數 2392 閱讀 1563

override(重寫)

override(只體現在具有繼承關係)是重寫(覆蓋)了乙個方法,以實現不同的功能。一般用於子類在繼承父類是,重新實現父類中的方法。

規則:

1.重寫方法的引數列表必須完全與被重寫的方法相同

2.重寫方法修飾符必須大於唄重寫方法的訪問修飾符(public>protected>default>private)

3.重寫方法的返回值和被重寫方法的返回值必須一致

4.重寫方法所丟擲的異常必須與被重寫方法丟擲的異常一致,或為其子類

5.被重寫方法不能為private,否則只是在子類中重新定義乙個新的方法。

且父類中,被重寫的方法一旦被final, 無論為public,protected或default修飾,子類均不能重寫。否則報錯

例子

public class father

}public class son extends father

}

overload(過載)

overload一般用於在乙個類內實現若干過載的方法,這些方法名稱相同而引數形式不同

規則:

1.在使用過載是只能通過相同的方法名,不同的引數形式實現。不同的引數型別,或不同的引數個數,或不同的引數順序

2.可以有不同型別的返回型別,也可相同

3.可以丟擲不同的異常

4.可以有不同的訪問修飾符

5.不能通過防衛許可權,返回型別,跑出異常的不同來進行過載

例子

public class overloading 

public void test(int a)

//以下兩個引數型別順序不同

public string test(int a,string s)

public string test(string s,int a)

public static void main(string args)

}

polymorphism(多型)

1,介面和實現並覆蓋介面的統一方法的幾個不同類的體現

2,父類和繼承父類中同一方法的幾個不同子類的實現

多型性:傳送訊息給某個物件,讓該物件自行決定相應何種行為。通過子類物件引用 賦值給 超類物件引用變數 來實現動態方法的呼叫

當超類物件引用變數引用子類物件是,被引用物件的型別(而不是引用變數的型別)決定呼叫誰的成員方法,但這個被呼叫的方法,必須是在超類

中定義過的,也就是說被子類覆蓋的方法。

使用父類型別的引用指向子類的物件(比如 animal a = new cat(); ),該引用只能呼叫父類中定義的方法和變數,若子類中重寫了父類中的乙個方法,

那麼在呼叫這個方法是,會呼叫子類的這個方法

class father 

//這是父類中的func2()方法,因為下面的子類中重寫了該方法

//所以在父類型別的引用中呼叫時,這個方法將不再有效

//取而代之的是將呼叫子類中重寫的func2()方法

public void func2()

}

class child extends father

//func2()重寫了父類father中的func2()方法

//如果父類型別的引用中呼叫了func2()方法,那麼必然是子類中重寫的這個方法

public void func2()

}

public class polymorphismtest

}

上面的程式是個很典型的多型的例子。子類child繼承了父類father,並過載了父類的func1()方法,重寫了父類的func2()方法。

過載後的func1(int i)和func1()不再是同乙個方法,由於父類中沒有func1(int i),那麼,父類型別的引用child就不能呼叫func1(int i)方法。

而子類重寫了func2()方法,那麼父類型別的引用child在呼叫該方法時將會呼叫子類中重寫的func2()。 那麼該程式將會列印出什麼樣的結果呢? 

很顯然,應該是「ccc」。

//父類 

public class father

} //子類1

public class son1 extends father

} //子類2

public class son2 extends father

} //子類3

public class son3 extends father

} //測試類

public class test

}

都呼叫了相同的方法,出現了不同的結果!這就是多型的表現!

Java中重寫 過載通俗的理解

子類繼承父類,擁有父類的方法和屬性後,子類在保證繼承的方法在方法名和引數列不變的情況下,對方法的內部實現進行重新定義,這種現象就是方法重寫 重寫比較側重於父子差異 示例父親 father類 名下有一套三層樓房,後來由兒子 son類 繼承,繼承之後碰巧拆遷,三層樓房在兒子這裡變成了拆遷款,這套房子 h...

java中的重寫與過載

重寫是子類對父類的允許訪問的方法的實現過程進行重新編寫,返回值和形參都不能改變。即外殼不變,核心重寫!重寫的好處在於子類可以根據需要,定義特定於自己的行為。也就是說子類能夠根據需要實現父類的方法。重寫方法不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的異常。例如 父類的乙個方法申明了乙個檢查異常 ...

java中的重寫與過載

重寫是指子類對父類方法的實現過程進行重新編寫,返回值和形參都不能改變。重寫的好處在於子類可以根據需要,定義特定於自己的行為。public class animal public class dog extends animal public class testdog 編譯並執行,結果如下 move...