zoukankan      html  css  js  c++  java
  • 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();        
    }    
     
    }
  • 相关阅读:
    性能测试四十五:性能测试策略
    性能测试四十四:性能优化思路
    性能测试四十三:数据库监控的指标
    性能测试四十二:sql案例之联合索引最左前缀
    性能测试四十一:sql案例之慢sql配置、执行计划和索引
    性能测试四十:Mysql存储过程造数据
    性能测试三十九:Jprofiler分析CPU过高和响应时间长的问题
    delphiIDE 把 window 桌面改慢后的 还原方法
    TStringList 善用 value['names'] 即使value 是带=号的值都没有关系呵呵 ,我靠 强,以后就用这个了,key=value首选
    TStringList,快速解析 查找测试。。。很有用,再也不用 FOR 循环了
  • 原文地址:https://www.cnblogs.com/macavalier/p/3101631.html
Copyright © 2011-2022 走看看