zoukankan      html  css  js  c++  java
  • 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访问器
            }
        }
    

      

  • 相关阅读:
    手动为php安装memcached扩展模块
    Linux下程序包管理工具RPM
    【Hibernate】一级、二级缓冲
    MySQL的用户和权限介绍
    一步一步教你安装openstack
    LVS负载平衡集群(没成型)
    SQL Server等待事件—PAGEIOLATCH_EX
    ORACLE ANALYZE使用小结
    为什么你SQL Server中SQL日期转换出错了呢?
    SQL Server误设置max server memory处理小结
  • 原文地址:https://www.cnblogs.com/xiao9426926/p/5888186.html
Copyright © 2011-2022 走看看