天天看點

《.NET程式員面試秘笈》----面試題8 方法的重載和override有什麼差別

本節書摘來自異步社群《.net程式員面試秘笈》一書中的第1章,面試題8,作者: 張雲翯, 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

.net程式員面試秘笈

【考點】對類體内函數的深刻了解,對重載機制的應用,對override的了解。

【出現頻率】

【解答】

方法的重載和重寫容易被混淆,重載是方法的名稱相同,函數簽名不同,進行多次重載以适應不同的需要。而重寫(override)是進行基類中函數的擴充或改寫,其簽名必須與被重寫函數保持一緻。

本例通過多種不同形式的構造函數建立執行個體,并輸出初始化的結果。在ch01目錄下建立一個程式檔案,并命名為override.cs,編寫代碼如程式1.9所示。

《.NET程式員面試秘笈》----面試題8 方法的重載和override有什麼差別
《.NET程式員面試秘笈》----面試題8 方法的重載和override有什麼差別

在指令行下編譯override.cs後,執行override程式,其效果如圖1.11所示。

本例的pc類中,以3種不同的參數清單聲明了3個getmsg方法,甚至第3個getmsg方法調用了前2個方法。

《.NET程式員面試秘笈》----面試題8 方法的重載和override有什麼差別

【分析】

方法的重載一般指通過對類中同名函數使用不同的簽名,以聲明多個函數體。簡單地說,給函數定義不同的參數個數或不同的參數類型,可以聲明不同的同名函數(傳回值也可以不同)。簡單的函數重載(在類中即為方法重載)如以下代碼所示:

以上代碼聲明了2個函數,雖然函數名相同,但函數的簽名不同,是以可以視做2個不同的函數。程式中調用時,通過不同參數傳遞執行不同的函數。

而override方法被稱為重寫方法,即在派生類中将所繼承的方法進行擴充或改寫,要求重寫後的方法簽名與被重寫的方法簽名一緻。派生類中隻有繼承的虛方法或抽象方法可以被重寫,并且靜态方法不能被重寫。其使用方法如以下代碼所示:

注意:

派生類所繼承的非密封override方法也可重寫,因為該方法是被重寫過的。

本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。

繼續閱讀