標籤:override overload 重載 覆蓋 重寫
- 一 Overload
- 二 Override
- 三 多態性
一. Overload
在同一個類中的許多方法可以擁有相同的名字,只要他們的參數聲明不同即可,這種方法被稱為重載。
舉個例子:
public class overload{ ‘‘‘一個重則輸出方法‘‘‘ void print(){ System.out.println("Hello!"); } ‘‘‘重載上面的輸出方法,加上了參數‘‘‘ void print(String name) { System.out.println(name + ",Hello!"); } ‘‘‘重載上面的輸出方法,加上兩個參數‘‘‘ void print(String name,int height){ System.out.println(name +",Hello!你有" + height + "cm高嗎?"); } public static void main(String args[]){ overload ol = new overload(); ‘‘‘建立一個對象ol‘‘‘ ol.print(); ol.print("令仔"); ol.print("令仔",180); }}
運行結果:
Hello!
令仔,Hello!
令仔,Hello! 你有180cm高嗎?
上面的執行個體中定義了3個同名的方法,但是卻有不同的參數類型和參數類型,使用重載其實就是避免繁多的方法名,有些方法的功能是相似的,如果重建立立一個方法,重新取個方法名稱,這回讓程式段顯得不容易閱讀。跟之前做系統的時候用到的SQLHelper挺像的。
重載的實質:
當訪問一個重載方法時,首先編譯器會比較參數類型與實際調用方法中使用值得類型,已選擇正確的方法,如果發現沒有匹配的方法,則編譯器報錯。
二. Override
說到覆蓋,就要先說說物件導向三大特徵之一:繼承;在繼承的過程中,子類中可以直接使用父類所繼承下來的方法,但是當子類中有聲明了相同名稱的方法的話,調用的則是子類的方法,這就是所謂的覆蓋。
看個執行個體:
public class father{ ‘‘‘建立方法print()‘‘‘ void print(){ System.out.println("這是父類特性!"); } public static void main(String args[]){ father f = new father(); son s = new son(); f.print(); s.print(); }}class son extends father{ ‘‘‘建立子類son繼承father‘‘‘ void print(){ ‘‘‘覆蓋方法print()‘‘‘ System.out.println("這是子類特性!"); } }
運行結果:
這是父類特性!
這是子類特性!
從上面的這段代碼可以看出,子類重新定義類父類的print()方法,子類的覆蓋方法與父類相同,知識方法體不一樣。
三. 多態性
多態就是擁有多種形態,在Java中,多態主要是指擁有相同的形式,但不同的參數實現不同的功能。
先說說重載:
‘‘‘建立一個學生類‘‘‘public class student{ student() ‘‘‘無參數建構函式‘‘‘ {} student(string name) ‘‘‘帶一個參數的建構函式‘‘‘ {} student (string name,string code) ‘‘‘帶兩個參數的建構函式‘‘‘}
上面的三個例子是3個建構函式的重載函數,具有相同的形態,但是他們根據參數的不同,實現的功能也不同,這就是多態,所以說重載其實具有多態性,或者說,重載是多態的一種形式。
然後再說覆蓋,為什麼也具有多態性?因為父類的方法在子類中被重寫,多態就是擁有多種形態,子類和父類的方法名稱相同,只不過完成的功能不一樣,所以說覆蓋也具有多態性。
可以說重載和覆蓋是多態的兩種表現形式。
新手學JAVA(七)----Override VS Overload