![](/img/trans.png)
[英]What is the purpose of hiding (using the "new" modifier) an interface method declaration?
[英]What's the purpose of access modifier in overriden method?
為什么在C#中,如果不進行更改,我需要指定要覆蓋的方法的訪問修飾符? 在這種情況下根本不指定任何訪問修飾符會更簡單,更合乎邏輯嗎?
(請澄清一下:我之所以寫這個問題,並不是因為我認為自己比語言設計師更聰明,而是因為我確定他們有充分的理由使我尚無法理解。)
編輯:我不是在問為什么我們不能更改訪問修飾符,而是在問為什么我們必須冗余地指定它。
雖然我不是語言設計師之一,但我認為強迫您指定它是完全合理的:
基本上,冗余有時是一件好事:)
為了說明喬恩在代碼中的觀點,請考慮以下幾點:
class LevelOne
{
public virtual void SayHi()
{
Console.WriteLine("Hi!");
}
}
class LevelTwo : LevelOne
{
override void SayHi()
{
Console.WriteLine("Hi!");
}
}
class LevelThree : LevelTwo
{
override void SayHi()
{
Console.WriteLine("Hi!");
}
}
廣告無限。 現在,假設您處於n深度的派生類中,則必須一直遵循繼承層次結構回到原始基類,以找出方法的訪問修飾符。 簡直太煩人了!
為了促進其他不編寫代碼的開發人員對代碼的理解。 當您閱讀覆蓋時,您知道您進行了多態
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.