C# 显示接口和隐式接口

来源:互联网 发布:入门单反推荐2017知乎 编辑:程序博客网 时间:2024/04/19 06:53

C#显示接口和隐式接口



ITest.cs

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace testInterface{    public interface IA    {                void TestA();        void Test();    }    /// <summary>    /// 接口B继承接口A 实现接口B 需要实现接口A和接口B的所有方法    /// </summary>    public interface IB : IA    {        void TestB();        //接口B继承接口A   接口A中已经有Test方法 接口B 必须实现 但是接口B想有一个自己的Test方法  需要使用关键字new(不然异常)        new void Test();    };    /// <summary>    /// 接口C继承接口A 实现接口C 需要实现接口A和接口C的所有方法    /// </summary>    public interface IC : IA    {        void TestC();        new void Test();    };    /// <summary>    /// 接口D继承接口B和接口C 实现接口D 需要实现接口D,B,C以及接口B,C的基接口 的所有方法(即 ABCD所有接口中的方法都要实现)    /// </summary>    public interface ID : IB, IC    {        void TestD();        new void Test();    };}

Program.cs

//-----------------------------------------------------------------------// <copyright file="Program.cs" company="XXXX">// Copyright (c) 2016 . All rights reserved.// </copyright>// <contact> Dong </contact>//-----------------------------------------------------------------------using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace testInterface{    public class A : IA    {                //隐式接口要用关键字 public 不然报错        public void TestA()        {            Console.WriteLine(" IN CLASS A TestA");        }        public void Test()        {            Console.WriteLine(" IN CLASS A Test");        }    }    public class B : IB    {        public void TestA()        {            Console.WriteLine(" IN CLASS B TestA");        }        public void TestB()        {            Console.WriteLine(" IN CLASS B TestB");        }        //显示实现接口不用关键字public  不然报错        void IA.Test()        {            Console.WriteLine(" IN CLASS B IA.Test");        }        void IB.Test()        {            Console.WriteLine(" IN CLASS B IB.Test");        }    }    public class C : IC    {        public void TestA()        {            Console.WriteLine(" IN CLASS C TestA");        }        public void TestC()        {            Console.WriteLine(" IN CLASS C TestC");        }        void IA.Test()        {            Console.WriteLine(" IN CLASS C IA.Test");        }        void IC.Test()        {            Console.WriteLine(" IN CLASS C IC.Test");        }    }    public class D : ID    {        public void TestA()        {            Console.WriteLine(" IN CLASS D TestA");        }        public void TestB()        {            Console.WriteLine(" IN CLASS D TestB");        }        public void TestC()        {            Console.WriteLine(" IN CLASS D TestC");        }        public void TestD()        {            Console.WriteLine(" IN CLASS D TestD");        }        void IA.Test()        {            Console.WriteLine(" IN CLASS D IA.Test");        }        void IB.Test()        {            Console.WriteLine(" IN CLASS D IB.Test");        }        void IC.Test()        {            Console.WriteLine(" IN CLASS D IC.Test");        }        void ID.Test()        {            Console.WriteLine(" IN CLASS D ID.Test");        }    }    public class Program    {                static void Main()        {            A a = new A();            a.TestA();            B b = new B();            b.TestA();            b.TestB();            C c = new C();            c.TestA();            c.TestC();            D d = new D();            d.TestA();            d.TestB();            d.TestC();            d.TestD();            Console.WriteLine("-------------------------------------");            a.Test();            //由于B中显示继承了两个Test()  使用的时候需要强制转换B类对象为相应的接口            ((IA)b).Test();            ((IB)b).Test();            ((IA)c).Test();            ((IC)c).Test();            ((IA)d).Test();            ((IB)d).Test();            ((IC)d).Test();            ((ID)d).Test();            Console.WriteLine("-------------------------------------");                        IA iaa = new A();            IA iab = new B();            IA iac = new C();            IA iad = new D();            iaa.Test();            iab.Test();            iac.Test();            iad.Test();            IB ibb = new B();            IB ibd = new D();            ibb.Test();            ibd.Test();            IC icb = new C();            IC icd = new D();            icb.Test();            icd.Test();            ID idd = new D();            idd.Test();        }    }    }



控制台输出


 IN CLASS A TestA IN CLASS B TestA IN CLASS B TestB IN CLASS C TestA IN CLASS C TestC IN CLASS D TestA IN CLASS D TestB IN CLASS D TestC IN CLASS D TestD------------------------------------- IN CLASS A Test IN CLASS B IA.Test IN CLASS B IB.Test IN CLASS C IA.Test IN CLASS C IC.Test IN CLASS D IA.Test IN CLASS D IB.Test IN CLASS D IC.Test IN CLASS D ID.Test------------------------------------- IN CLASS A Test IN CLASS B IA.Test IN CLASS C IA.Test IN CLASS D IA.Test IN CLASS B IB.Test IN CLASS D IB.Test IN CLASS C IC.Test IN CLASS D IC.Test IN CLASS D ID.Test请按任意键继续. . .



0 0
原创粉丝点击