3

別の翻訳の質問です。これはより理論的なものかもしれませんが、デザインの選択について興味があります。SFNQ:

C# では、Java のようにインターフェイス内のメソッドへのアクセスを制御できないのはなぜですか? たとえば、C# インターフェイスでは次のようになります。

   public void Visit(Axiom axiom);

ありがとうございました。

4

3 に答える 3

6

C# および .Net では、一般に、インターフェイスのすべてのメソッドは既定でパブリックです。アクセスを制限する方法はありません。

別の方法を考えてみましょう。インターフェイスに保護されたメンバーがあるとはどういう意味でしょうか? インターフェイスの呼び出し元が特定のメソッドにアクセスすることを許可または禁止するアクセス ルールをどのように確立しますか? (Java の意味ではなく、C# の意味で保護されていることを意味します)。

さらに良いことに、プライベートとはどういう意味ですか?

于 2009-06-24T14:35:03.047 に答える
5

C# と Java の両方で、インターフェイスのすべてのメソッドはパブリックです。

Java では、 public キーワードが許可されており、解析規則を節約できる可能性があります。C# では、 public キーワードは冗長と見なされ、インターフェイス宣言から完全に削除されました。

于 2009-06-24T14:32:47.107 に答える
4

C# では、インターフェイスのすべてのメンバーをパブリックにする必要があるため、メンバー宣言に可視性修飾子を追加することはできません。したがって、 public キーワードは冗長であり、必要ありません (実際、これを含めると、コンパイラ エラーが発生します)。

インターフェースは、インターフェース定義で指定されたすべての機能を提供することを示す契約です。インターフェイスにプライベート メンバーを含めることが許可されている場合、その機能を公開することはありません (したがって、コントラクトに違反することになります)。

于 2009-06-24T14:36:24.917 に答える