接口

接口 

  1. 接口是一个完全抽象的一种约定,相当于没有任何方法实现的抽象类,接口是用来实现的
  2. 定义一个接口用关键字:interface,接口中的成员不能添加访问修饰符,并且成员不能够有实现
  3. 接口的定义通常用一个大写字母I开头,比如:IComparable
  4. 接口中可以定义事件、方法、简写的属性、索引,其实严格的说只是能够定义方法,因为事件属性以及索引内部还是方法。属性的本质是方法,简写的属性编译器不会生成字段,故相当于定义了两个没有实现的方法
  5. 接口是用来实现的,所有成员默认的为public。所有的成员定义的时候是不需要写访问修饰符的,因为没有意义,如果是private,只能够自己调用,但是自己又实现不了方法,谁来调用?但是实现的时候需要写。如果一个类实现了接口必须要实现接口里面定义的方法,并且实现的方法必须是public类型
  6. 如果一个类即继承了类又实现了接口,那么继承的类必须写在前面,实现的接口写在后面,实现接口同样式冒号 接口名 : IFly
  7. 一个类只是能够继承一个类,但是却可以实现多个接口,各个接口和类之间用逗号隔开即可
  8. 接口中定义的属性只能够是{get;set;}这种简写形式,不能够提供具体的实现,并且如果定义的属性是只读的,在实现接口的时候必须提供实现体
  9. 同样可以用接口变量来指向一个实现了这个接口的对象,但是这样能够调用的就只是接口中提供的能力
	interface IFly
	{
		void fly();
	}


C#中接口和类的异同点 

不同点:

  1. 不能够直接实例化接口,即: IFly fly = new IFly(); 是不可以的
  2. 接口中能够定义方法,但是不提供方法的实现体,但是需要写上返回值类型。即:void Say(); 形式
  3. 类只能够单继承,但是接口却可以多继承(准确的叫做实现)
  4. 一个类的定义可以再不同的源文件之间进行一个拆分:用关键字 partial 来实现

相同点:

  1. 接口、类和结构都可以从多个接口来继承,应该说是实现多个接口
  2. 接口类似于抽象基类,继承接口的所有非抽象类型都必须实现接口的所有成员
  3. 接口和类都可以包含事件、索引、方法和属性

抽象类定义的是公共的实现和能力,接口只是能够定义公共的能力,接口相当于给类打个标签,标识这个类有这个能力

C#中是否支持多继承
类之间不支持,接口之间支持。类对接口之间叫做实现。可以理解为一个人只能够有一个爹但是可以有多种能力,接口叫实现







原文地址:https://www.cnblogs.com/qigang/p/3841930.html