• (转)C#Interface简介


    接口:描述可属于任何类或结构的一组相关功能,通过interface关键字来声明;
    接口只包含方法、委托或事件和属性的签名(接口包含的成员)、不能包含字段(因为字段是包含数据的)。方法的实现是“继承”接口的类中完成的;
    接口可以包含的成员的访问修饰符只能且默认为public
    一个接口可以从一个或多个基接口继承;
    接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员;
    当基类型列表包含基类和接口时,基类必须是列表中的第一项;
    实现接口的类可以显式实现该接口的成员,显示实现的成员不能通过类实例访问,而只能通过接口实例访问;
    类和结构可以按照类继承基类或结构的类似方式继承接口;但注意:
    类或结构可继承多个接口;
    类或结构继承接口时,仅继承方法名称和签名,因为接口本身不包含实现;
    接口和接口成员是抽象的(但不用写出abstract关键字);接口不提供默认实现;
    接口是一种规划(为你定义出一系列的规则和任务,但不去实现它)
    下面的例子很好的说明了这点:
        interface IMyInt//定义一个接口:通讯工具的接口
        {
            string Name//包含只读字段的通讯工具名属性
            {
                get;
            }
            string Number//通讯工具的号码属性
            {
                get;
                set;
            }
        }
        public class Tel : IMyInt//固定电话类型
        {
            string name = "固定电话";
            string number;
            //对接口中Name和Number的实现
            public string Name
            {
                get { return name; }
            }
            public string Number
            {
                get
                {
                    return number;
                }
                set
                {
                    number = value;
                }
            }
        }
        public class Phone : IMyInt//移动电话类型
        {
            string name = "移动电话";
            string number;
            public string Name
            {
                get { return name; }
            }
            public string Number
            {
                get
                {
                    return number;
                }
                set
                {
                    number = value;
                }
            }
        }
        public class Fax : IMyInt//传真机类型
        {
            string name = "传真机";
            string number;
            public string Name
            {
                get { return name; }
            }
            public string Number
            {
                get
                {
                    return number;
                }
                set
                {
                    number = value;
                }
            }
        }
        public class Program
        {
            static List<IMyInt> list = new List<IMyInt>();//存放IMyInt接口的列表集合;
            static string select = " ";//选择变量
            static void AddNum(IMyInt myint)//添加号码的方法;注意:此处参数的类型是IMyInt,这样无论添加的是Tel、Phone、Fax类型,                                        //都可以向list里面添加;即:好型接口提供了一个模糊的模型,满足这个模型的继承了这个接                                        //口的类型都可以作为参数;
            {
                list.Add(myint);
            }
            static void Main()//程序的入口点Main
            {
                for (int i = 0; i < 3; i++)
                {
                    string num = "";
                    Console.WriteLine("1、Fax");
                    Console.WriteLine("2、Phone");
                    Console.WriteLine("3、Tel");
                    select = Console.ReadLine();
                    Console.Write("输入添加的号码");
                    if (select == "1")
                    {
                        Fax f = new Fax();
                        num = Console.ReadLine();
                        f.Number = num;
                        AddNum(f);//AddNum方法的调用
                    }
                    if (select == "2")
                    {
                        Phone p = new Phone();
                        num = Console.ReadLine();
                        p.Number = num;
                        AddNum(p);
                    }
                    if (select == "3")
                    {
                        Tel t = new Tel();
                        num = Console.ReadLine();
                        t.Number = num;
                        AddNum(t);
                    }
                }
                for (int i = 0; i < list.Count; i++)
                {
                    Console.WriteLine("name:{0};number:{1}", list[i].Name, list[i].Number);
                }
                Console.ReadLine();
            }
        }
  • 相关阅读:
    vagrant 的安装与使用
    vagrant 的安装与使用
    rz、sz (上传下载)命令参数的解释
    rz、sz (上传下载)命令参数的解释
    TensorFlow 学习(十五)—— tensorflow.python.platform
    音乐的作曲形式
    vc中edit控件使用总结
    引用 LPSTR、LPCSTR、LPTSTR、LPCTSTR、LPWSTR及LPCWSTR的意义及区别
    编译原理三大经典书籍(龙书 虎书 鲸书)
    VS2003与Win7的兼容性问题
  • 原文地址:https://www.cnblogs.com/280850911/p/3149306.html
Copyright © 2020-2023  润新知