「過載」和「重寫」的區別

2021-10-14 07:15:23 字數 1906 閱讀 4311

目錄

【c#】重寫和過載的區別 過載

1.首先解釋一下什麼是方法過載?

2.這裡所說的引數不同是指以下幾種情況:

3.過載的作用

4.**示例 重寫

1.首先解釋一下什麼是方法重寫?

2.重寫的實現方法。

3.重寫的特徵。

4.重寫的**示例 區別

作用:方便呼叫時候,不用記住很多的函式方法名字,減少呼叫複雜性

方法過載是指在同乙個類中方法同名,引數不同,呼叫時根據實

參的形式,選擇與他匹配的方法執行操作的一種技術。

引數的型別不同

引數的個數不同

引數的個數相同時他們的先後順序不同

注意:系統會認為是同乙個方法的兩種情況,這樣的兩個方法不可以在同乙個類裡,否則系統會報錯。

返回型別不同,方法名和引數個數、順序、型別都相同的兩個方法

返回型別相同,方法名和引數的個數、順序、型別都相同的兩個方法,但是引數的名字不同

方法過載的主要好處就是不用為了對不同的引數型別或引數個數,而寫多個函式。多個函式用同乙個名字,但參數列,即引數的個數或(和)資料型別可以不同,呼叫的時候,雖然方法名字相同,但根據參數列可以自動呼叫對應的函式。這樣我們在呼叫的時候,就不需要記那麼多的方法名稱,而是知道了方法的功能就可以直接的給他傳遞不同的引數,編譯器會明確的知道我們呼叫了哪乙個方法。

過載的最直接作用是方便了程式設計師可以根據不同的引數個數,順序,型別,自動匹配方法,減少寫過個函式名或方法名的重複步驟

using system;

namespace stars

public test(string name)

public test(string name, int age)

public test(string name, int age, double height)}}

在 main 方法中分別通過上面定義的構造器建立類的物件,**如下。

using system;

namespace stars

}}/*

//執行結果

hello

hello 小明

hello 張三,20

hello 張三,20-174

*/

「重寫」父類方法就是修改它的實現方式或者說在子類中對它進行重新編寫。當乙個子類繼承一父類,而子類中的方法與父類中的方法的名稱,引數個數、型別都完全一致時,就稱子類中的這個方法重寫了父類中的方法。

通常,派生類繼承基類的方法。因此,在呼叫物件繼承方法的時候,呼叫和執行的是基類的實現。但是,有時需要對派生類中的繼承方法有不同的實現。 比如動物都有「叫」的方法。貓和狗是它的子類,貓的叫聲是「喵」,狗的叫聲是「汪」,如何在子類中重寫父類的方法呢?首先在動物類中構造乙個虛方法。    在構建貓這個類時,我們重寫「叫」這個方法,在構建狗這個類時,我們也重寫「叫」這個方法。

重寫是子類對父類的允許訪問的方法的實現過程進行重新編寫, 返回值和形參都不能改變。即外殼不變,核心重寫!

重寫的好處在於子類可以根據需要,定義特定於自己的行為。 也就是說子類能夠根據需要實現父類的方法。

重寫方法不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的異常。

using system;

namespace stars

public class to

}public class my : to}}

}

執行結果:

嗨侯

過載和重寫區別

區別就是 過載 只在自己內部類 繼承的時候通過變換返回引數型別和引數個數來實現的 或者只在乙個類中的話,就是通過構造方法的引數不同來進行過載 左邊的是重寫,右邊的是過載 右邊子類的方法和父類的方法是完全兩個方法,因為引數變了 重寫 子類和父類之間 是子類實現父類同名方法,而且方法內部的引數型別要一模...

重寫和過載區別

當子類繼承父類的方法,這些方法不滿足自身需求時,子類可以重寫從父類繼承的方法。重寫的規則 修飾符 返回型別 方法名 引數 public void skill package jicheng public class dog extends anima package jicheng 子類 publi...

重寫和過載的區別

過載是指同乙個類中有若干個名稱相同但引數不同的方法。呼叫方法時,系統會根據實參情況,呼叫引數完全匹配的那個方法。重寫是指在繼承關係中,在派生類中重寫由基類繼承來的方法,這時基類和派生類中就有兩個同名的方法。系統根據物件的 實際型別呼叫相應版本的方法,當物件型別為基類時,系統呼叫基類中的方法。當物件型...