[attributes] [access-modifiers] interface interface-name [:base-inteface-list] { interface body }
各项释义
attributes(可选):附加的定义性信息,允许复数。
access-modifiers(可选):允许使用的修饰符有 new 和四个访问修饰符。分别是:new、public、protected、internal、 private。在一个接口定义中同一修饰符不允许出现多次,new 修饰符只能出现在嵌套接口中,表示覆盖了继承而来的同名成员。public, protected, internal, private 修饰符定义了对接口的访问权限,默认值是internal。
interface-name :接口名, 并不需要解释。
base-inteface-list(可选):包含一个或多个显式基接口的列表,接口间由逗号分隔。
interface body :接口主体(不能有访问修饰符),只是定义接口的方法和属性等的签名,实际的实现是写在使用该接口的class里。
使用方法
通过类继承接口来使用接口,表象为类执行接口中的interface body 部分,类继承接口后要执行全部指令。
接口是可以继承接口的,使用方法等同于类继承,套用后调用。接口继承接口不用实现继承的接口中的方法,不过一个类继承一个有继承其他接口的接口时,一定要实现继承链上所有接口中的所有方法,不然就会报错。
类可以调用多个接口,按照顺序执行。
接口声明示例
public interface IStorable { int x{get;set;}\\存储变量}
接口继承
public class Document : IStorable//如继承一般类一般继承接口,与其类似的是c与c++中也有类似的操作 { public void Read( ) {...}//这里可以加修饰符了,并写出实现代码 public void Write(object obj) {...} ... }
接口继承有多种形式,但是殊途同归的是不管执行了什么操作,都是继承了接口中的语句的前提下进行的。
通常情况下尽量不要在一个接口中放入多种功能不同的语句,容易造成逻辑混乱,不如建立多个接口来使用,方便而且不容易错误。
接口污染是最容易出现的问题,即如果一个类A实现了这个接口B,但是接口B中某个"功能"C 是A根本不可能有的,因为A实现了接口B,所以必须实现B中的所有"功能",那么这个C也要被A实现,显然这个C是A根本不可能有的。
也就是说逻辑混乱,所以通常最好不要在一个接口中放入大量不同功能的语句。尽量使用精简的接口。