[英]Java2C# translation: public methods in Interfaces in C#
另一個翻譯問題,這可能更具理論性,但我對設計選擇感到好奇。 SFNQ:
為什么C#不允許控制訪問Java等接口中的方法? 例如,在C#界面中:
public void Visit(Axiom axiom);
謝謝。
在C#和.Net中,默認情況下,接口上的所有方法都是公共的。 沒有辦法限制他們的訪問權限。
考慮替代方案,在接口上擁有受保護的成員意味着什么? 您如何建立訪問規則以允許或禁止接口的調用者訪問特定方法? (我的意思是在C#意義上保護,而不是java)。
更好的是,私人意味着什么?
在C#和Java中,接口上的所有方法都是公共的。
在Java中,允許使用public關鍵字,可能會節省解析規則。 在C#中,public關鍵字被認為是冗余的,並且完全從接口聲明中刪除。
在C#中,接口的所有成員都必須是公共的,因此它不允許您向成員聲明添加任何可見性修飾符。 因此,public關鍵字是多余的而不需要(事實上,如果包含它,則會出現編譯器錯誤)。
接口是一個合同,聲明您將提供接口定義中指定的所有功能。 如果您被允許在界面中擁有私人成員,則您不會暴露該功能(因此您將違反合同)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.