黑马程序员C#接口

接口使类更加规范

接口具有下列属性:
接口类似于抽象基类:实现接口的任何非抽象类型都必须实现接口的所有成员。
不能直接实例化接口。
接口可以包含事件、索引器、方法和属性。
接口不包含方法的实现。
类和结构可继承多个接口。
接口自身可从多个接口继承。
例如:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;

  5. namespace vs1.test
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             //People p = new People("zs");//不能创建接口实例
  12.             People peMan = new Man();
  13.             People peWomen = new Women();
  14.             //peMan.name = "xiaoming";
  15.             peWomen.Name = "zhangsan";
  16.             peMan.Speak();
  17.             peWomen.Speak();
  18.             //peMan.GanHuo(); 不存在
  19.             //peWomen.FengYiFu();不存在
  20.             Console.WriteLine(peMan.Name);
  21.             Console.WriteLine(peWomen.Name);
  22.            //peWomen[1]; 索引器也无法使用
  23.            //peMan[1]; 索引器也无法使用
  24.             Women woWomen = new Women();
  25.             woWomen.FengYiFu();
  26.             woWomen.Name = "lis";
  27.             woWomen.Speak();
  28.             Console.WriteLine(woWomen[1, "xiaobai"]); 
  29.             Console.ReadKey();
  30.         }
  31.     }
  32.     interface People 
  33.     {
  34.         //public People(string name) { this.name = name; } //接口不能包含构造函数
  35.         //private string name; //接口不能包含字段
  36.         string Name //public修饰符不能用
  37.         {
  38.             set;
  39.             get;
  40.         }
  41.          void Speak(); //public修饰符不能用
  42.         //{
  43.         //    Console.WriteLine("interface Speak()"); //方法体不能定义
  44.         //}
  45.          string this[int index, string name] //public修饰符不能用
  46.          {
  47.              get; 
  48.              //set;
  49.          } 
  50.     }
  51.     class Man : People
  52.     {
  53.         public string Name { set; get; } //必须要实现接口的属性
  54.         public void Speak()  //必须要实现接口的方法
  55.         { Console.WriteLine("Man Speak()"); }
  56.         public void GanHuo()
  57.         {
  58.             Console.WriteLine("男人干累活");
  59.         }
  60.         public string this[int index,string name] //必须要实现接口的索引器
  61.         {
  62.             //set { this.Name = name; } //至少要有一个访问器
  63.            get { return Name; }
  64.         }
  65.     }
  66.     class Women : People
  67.     {
  68.         public string Name { set; get; }
  69.         public void Speak() { Console.WriteLine("Women Speak()"); }
  70.         public void FengYiFu()
  71.         {
  72.             Console.WriteLine("女人逢衣服");
  73.         }
  74.         public string this[int index,string name]
  75.         {
  76.             //set { this.Name = name; }
  77.             get { return Name; }
  78.         }
  79.     }
  80. }
复制代码
所有实现接口的类必须要重写接口中的内容,要求方法名和签名必须一致
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值