C#第四次作业(接口)

[attributes] [access-modifiers] interface interface-name [:base-inteface-list] 
{ interface body }

各项释义

attributes(可选):附加的定义性信息,允许复数。

access-modifiers(可选):允许使用的修饰符有 new 和四个访问修饰符。分别是:newpublicprotectedinternal、 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根本不可能有的。

也就是说逻辑混乱,所以通常最好不要在一个接口中放入大量不同功能的语句。尽量使用精简的接口。

posted @ 2015-04-06 17:11  月染苏拉格  阅读(245)  评论(0编辑  收藏  举报