java中的重載、重寫和隱藏

一、重載(overload

方法重載就是一個類中定義多個同名的方法,但要求每個方法具有不同的參數類型或者不同的參數個數。重載與返回值的類型和修飾符無關

class test{
public int fun(int a){}
public string fun(string a){}
public float fun(int a,string b){}
public float fun(string a,int b){}
void string fun(float a){}
void string fun(int a){}//該方法不是重載
}


前五個方法互爲重載方法,第一個和第六個不是重載方法(雖然兩個方法的返回值類型不同,但兩個方法的名字相同,參數個數和參數類型都相同)。所以重載方法的返回值類型不一定相同,方法名一定相同,參數類型或個數一定不同。

二、重寫(override

當子類繼承父類,子類中方法的名稱,參數類型,參數個數與父類中的方法都完全一致,則認爲子類中的方法重寫了父類中的方法。

public class Parent {
public void fun1(int i){
/*do something...*/
}
public String fun2(){

return "parent";
}
}
public class Child extends Parent{
public void fun1(int i){
/*do other something...*/
}
public String fun2(){
return "child";
}
}

重寫的規則:

(1)重寫方法不能比被重寫方法限制更嚴格的訪問級別,即訪問權限可以是擴大但不能縮小父類與子類的訪問權限可以是public和public,protected和protected,protected和public,但不能是public和protected。

(2)標識爲final的方法不能被重寫,靜態方法不能被重寫。

(3)重寫方法的返回類型必須與被重寫方法的返回類型相同

(4)重寫方法的參數列表必須與被重寫方法的參數列表相同。

(5)重寫方法不能拋出新的異常,或者比被重寫方法聲明的檢查異常更廣的檢查異常,但可以拋出更少或者不拋出異常。

(6)抽象方法必須在具體類中被重寫。
三、隱藏()

隱藏發生在子類與父類之間,隱藏是針對父類中的成員變量和靜態方法而言。當子類聲明瞭與父類相同的變量名的變量時就實現了對父類成員變量的隱藏。當子類聲明瞭與父類的靜態成員方法中相同方法名,相同參數列表和相同返回類型的方法,則實現了對父類靜態方法的隱藏。

原則:靜態方法被隱藏,實例方法被覆蓋(重寫),父類中的成員變量能夠被子類中的同名變量隱藏,但局部變量和形參不會被隱藏。

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