重寫和過載

2021-10-10 01:52:28 字數 1413 閱讀 9954

重寫(overriding) 是子類對父類的允許訪問的方法的實現過程進行重新編寫, 返回值和形參都不能改變。

class

animal

}class

dogextends

animal

}public

class

testdog

}

重寫方法的異常一定比父類更小。如果父類方法丟擲ioexception,那麼子類重寫的方法就不可以丟擲exception,因為exception的範圍比ioexception更廣,子類只能丟擲ioexception 的子類。

訪問許可權不能比父類中被重寫的方法的訪問許可權更低。例如:如果父類的乙個方法被宣告為 public,那麼在子類中重寫該方法就不能宣告為 protected。

宣告為 final 的方法不能被重寫;宣告為 static 的方法不能被重寫,但是能夠被再次宣告。

class

animal

}public

class

horse

extends

animal

public

static

void

main

(string [

] args)

}

子類和父類在同乙個包中,那麼子類可以重寫父類所有方法,除了宣告為 private 和 final 的方法;子類和父類不在同乙個包中,那麼子類只能夠重寫父類的宣告為 public 和 protected 的非 final 方法。

過載(overloading) 是在乙個類裡面,方法名字相同,而引數不同。返回型別可以相同也可以不同。

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)

}

區別點

過載重寫

引數列表

必須修改

一定不能修改

返回型別

可以修改

一定不能修改

異常可以修改

可以減少或刪除,一定不能拋出新的或者更廣的異常

訪問可以修改

一定不能做更嚴格的限制(可以降低限制)

方法過載是乙個類的多型性表現,而方法重寫是子類與父類的一種多型性表現。

過載和重寫

物件導向的三大特性 繼承 封裝 多型。過載和重寫是多型的兩種表現形式。過載和重寫又有什麼區別呢?1 層次不同 重寫 發生在父類和子類之間。是子類重寫父類的方法,具有相同的方法名和方法引數。比如說,父子兩人都去吃飯 相同的方法 吃的是麵條 引數 父親飯量大,吃兩碗,兒子飯量小,就能吃一碗 實現了吃飯的...

過載和重寫

asp.net unity開發 net培訓 期待與您交流!過載 乙個類裡面有多個方法,方法名稱是相同的,返回值可以不同,引數列表的個數 型別 順序不同。區分過載方法可以通過引數列表的個數 型別 順序來決定呼叫哪個方法。過載可以子類過載父類的方法,並且可以靜態非靜態之間轉換。重寫 覆蓋 一般是指父類和...

重寫 和 過載

型構就是指方法的組成結構,具體包括方法的名稱和引數,涵蓋引數的數量 型別以及出現的順序,但是不包括方法的返回值型別,訪問許可權修飾符,以及abstract static final等修飾符。1.public void method int i,string s 4.5.public string m...