0

インターフェイスについていくつか質問があります。

  1. インターフェイス メンバーで virtual キーワードを使用できない理由

  2. インターフェイスから派生したクラスでオーバーライド キーワードを使用できない理由

  3. 仮定する

    interface Iface
    {
        void Func();
    }
    class Program : Iface
    {
        static void Main(string[] args)
        {
    
        }
        public void Func()
        {
            Console.WriteLine("In func");
        }
    }
    

    インターフェイスからの派生クラス、つまり Func() 定義のメンバー関数で public を使用する必要があるのはなぜですか? public キーワードを使用していない場合、コンパイル時エラーが発生します

  4. インターフェイスで静的メンバーを使用できますか?

4

3 に答える 3

5
  1. メソッドをvirtualとマークすると、継承クラスにそれぞれのメソッドをオーバーライドするオプションが与えられます。ただし、インターフェイスから継承する場合、実装はオプションではなく必須です。すべてのインターフェイス メソッドは、定義上抽象的です。

  2. メソッドをオーバーライドするのではなく、実装します。インターフェイス メソッドには独自の実装がなく、オーバーライドするものはありません。意味がありません。

  3. クラスに実装された C# インターフェイス メソッドをパブリックにする必要がある理由

  4. いいえ、インターフェイスで静的メソッドを使用することはできません

于 2013-04-19T10:46:05.083 に答える
2
  1. インターフェイスはそれを必要としません。実装は可能virtualです。
  2. 実装はそれを必要としません - オーバーライドするものは何もありません。
  3. Programto callをインスタンス化する必要がありますFunc。また、静的インターフェースの概念もありません。
于 2013-04-19T10:44:13.780 に答える
-1

インターフェイスはクラスのようには機能しません。インターフェイスのオブジェクトを作成して多重継承を実現できる場合、クラスの多重継承の場合に発生するダイヤモンドの問題に直面する可能性があるためです。

于 2013-04-19T14:49:44.690 に答える