インタフェース実装マルチステート

4273 ワード

継承には一本性という特徴があるため、つまり一つのクラスは一つの親としか継承できないが、时には私たちは複数のクラスを継承する必要がある.それでは私はこのようにインタフェースの出現があり、インタフェースの実現は一つのクラスが複数のクラスを継承できるようにし、継承した複数のクラスは実際には継承のインタフェースである.
インタフェースはinterfaceキーワードを使用してクラスがいくつかのインタフェースであることを表します
インタフェースの特徴
1、インタフェースのメンバーには何の実装もできません(「何も言わない」で、実装されていないメンバーのセットを定義しているだけです).2、マルチステートのためです.インタフェースはインスタンス化できません.すなわち、インタフェースはnew(オブジェクトを作成できない)3、1つのクラスが1つのインタフェースを継承している限り、このクラスはこのインタフェースのすべてのメンバー4を実現しなければならない.インタフェースのメンバーは「アクセス修飾子」を付けることができず、インタフェースのメンバーアクセス修飾子はpublicと黙認し、修正できない.5、インタフェースにはメソッド、プロパティ、インデックス、イベントのみがあり、「フィールド」とコンストラクション関数はありません.6、インタフェースとインタフェースの間で継承することができて、しかも多く7を継承することができて、インタフェースは1つのクラスを継承することができなくて、クラスはインタフェースを継承することができて(インタフェースはインタフェースに継承することができて、クラスはインタフェースを継承することができて、クラスを継承することができて、1つのクラスは同時に1つのクラスを継承して複数のインタフェースを実装することができて、それでは文法上AはIAの前に書かなければなりません.
 //                        
 //             ,              ,             
  public interface ISwimming
    {
        void Swim();
    }
   public class RealDuck:ISwimming
    {

        public void Swim()
        {
            Console.WriteLine("         ");
        }
    }
   public class XPDuck : ISwimming
    {

        public void Swim()
        {
            Console.WriteLine("        ");
        }
    }
    public class MuDuck 
    { 
    //            ,                   
    }

同じようにMainメソッドで呼び出します
static void Main(string[] args){
     ISwimming swim = new XPDuck();//new RealDuck();
         swim.Swim();
         //        
}

インタフェースと抽象クラスの実装の多態は似ていることがわかりますが、インタフェースがより重視しているのは方法の実装です.
上記のインタフェースとインタフェースの間で継承でき、インタフェースが複数のインタフェースを継承できる場合、1つのクラスが複数の継承インタフェースを継承する場合、このクラスではすべての継承チェーン上のメソッドをすべて実装する必要があります.
下の味噌紫のようです——————
 public interface M1
    {
        void Test1();
    }

    public interface M2
    {
        void Test2();
    }

    public interface M3
    {
        void Test3();
    }
//             
    public interface SupperInterface : M1, M2, M3
    { 

    }
//                ,               
    public class Car : SupperInterface
    {

        public void Test1()
        {
            throw new NotImplementedException();
        }

        public void Test2()
        {
            throw new NotImplementedException();
        }

        public void Test3()
        {
            throw new NotImplementedException();
        }
    }