Interface/接口

Posted HepburnXiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Interface/接口相关的知识,希望对你有一定的参考价值。

1. 类和结构能够实现接口

2. 接口声明包含如下四种类型:属性、方法、事件和索引;这些函数声明不能包含任何实现代码,而在每一个成员的主体后必须使用分号

3. 继承接口的类或结构必须实现接口中的所有成员

4. 显示接口的实现注意下面的代码

class Program
    {
        static void Main(string[] args)
        {
            SampleClass_1 sc = new SampleClass_1();
            IControl ctr1 = (IControl)sc;
            ISurface srfc = (ISurface)sc;
            // 调用一样的方法,继承
            sc.Paint();
            ctr1.Paint();
            srfc.Paint();
            Console.WriteLine();

            //显式接口实现
            SampleClass_2 obj = new SampleClass_2();
            IControl c = (IControl)obj;
            ISurface s = (ISurface)obj;
            obj.Paint();
            c.Paint();
            s.Paint();

            Console.ReadKey();
        }
    }
    public interface IControl // 接口可以有访问修饰符
    {
        void Paint();      //成员不允许有任何访问修饰符,默认public
        int P { get; }
    }
    public interface ISurface
    {
        void Paint();
    }
    class SampleClass_1:IControl,ISurface
    {
        //IControl.Paint和ISurface.Paint都会调用这个方法
        public void Paint()
        {
            Console.WriteLine("Paint method in SampleClass");
        }
        private int _value=10;
        public int P
        {
            get { return _value; }
            set { _value = value; }  //可以添加set访问器
        }
    }
    class SampleClass_2:IControl ,ISurface 
    {
        //显式接口实现
       void IControl.Paint()  //这时候不能加访问修饰符public, 要完全和接口定义一致
        {
            Console.WriteLine("IControl.Paint");
        }
        void ISurface.Paint()
        {
            Console.WriteLine("ISurface.Paint");
        }
        public void Paint()
        {
            Console.WriteLine("SampleClass_2.Paint");
        }
        private int _value=10;
        int IControl.P
        {
            get { return _value; }
            //set { }显式接口必须和接口定义完全一致,不能任意添加set访问器
        }
    }

  

以上是关于Interface/接口的主要内容,如果未能解决你的问题,请参考以下文章

0507 构造代码块和static案例,接口interface

如何在嵌套片段内的两个子片段之间进行通信

PHP interface(接口)的示例代码

Interface/接口

TypeScript Interface(接口)

重构第9天:提取接口(Extract Interface)