正文

C#语法详细解释---接口[1]2008-09-17 01:50:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yzrj/37341.html

分享到:

              接口

一个接口定义一个协定。实现某接口的类或结构必须遵守该接口定义的协定。一个接口可以从多个基接口继承,而一个类或结构可以实现多个接口。

接口可以包含方法、属性、事件和索引器。接口本身不提供它所定义的成员的实现。接口只指定实现该接口的类或结构必须提供的成员。

1.1 接口声明

interface-declaration 是用于声明新的接口类型的 type-declaration 错误!未找到引用源。

interface-declaration:
attributesopt   interface-modifiersopt  
interface   identifier   interface-baseopt   interface-body   ;opt

interface-declaration 由下列项组成一个可选的 attributes 错误!未找到引用源。 ),后跟一个可选的 interface-modifiers 1.1.1 ),后面再跟关键字 interface 和命名接口的 identifier还可根据需要后跟可选的 interface-base 规范 1.1.2 ),再后跟 interface-body 1.1.3 ),还可选择后跟一个分号。

1.1.1 接口修饰符

interface-declaration 可以根据需要包含一个接口修饰符序列

interface-modifiers:
interface-modifier
interface-modifiers   interface-modifier

interface-modifier:
new
public
protected
internal

private

同一修饰符在一个接口声明中出现多次属于编译时错误。

new 修饰符仅允许在类中定义的接口中使用。它指定接口隐藏同名的继承成员,详见第 错误!未找到引用源。 节中的介绍。

publicprotectedinternal private 修饰符控制接口的可访问性。根据接口声明所在的上下文只允许使用这些修饰符中的一部分 错误!未找到引用源。

1.1.2 基接口

接口可以从零个或多个接口继承被继承的接口称为该接口的显式基接口 (explicit base interface)。当接口具有一个或多个显式基接口时,在该接口声明中,接口标识符后就要紧跟一个冒号以及一个由逗号分隔的基接口标识符列表。

interface-base:
:   interface-type-list

接口的显式基接口必须至少与接口本身具有同样的可访问性 错误!未找到引用源。 。例如 public 接口的 interface-base 中指定 private internal 接口就是一个编译时错误。

接口不能从自身直接或间接继承否则会发生编译时错误。

接口的基接口 (base interface) 包括显式基接口以及这些显式基接口的基接口。换言之,基接口集是显式基接口、它们的显式基接口(依此类推)的完全可传递的闭包。接口继承其基接口的所有成员。在下面的示例中

interface IControl
{
void Paint();
}

interface ITextBox: IControl
{
void SetText(string text);
}

interface IListBox: IControl
{
void SetItems(string[] items);
}

interface IComboBox: ITextBox, IListBox {}

IComboBox 的基接口是 IControlItextBox IListBox

换言之上面的 IComboBox 接口继承 SetTextSetItems 以及 Paint

如果一个类或结构实现某接口则它还隐式实现该接口的所有基接口。

1.1.3 接口体

接口的 interface-body 定义接口的成员。

interface-body:
{   interface-member-declarationsopt   }

1.2 接口成员

接口的成员包括从基接口继承的成员和由接口本身声明的成员。

interface-member-declarations:
interface-member-declaration
interface-member-declarations   interface-member-declaration

interface-member-declaration:
interface-method-declaration
interface-property-declaration
interface-event-declaration
interface-indexer-declaration

一个接口声明可以声明零个或多个成员。接口的成员必须是方法、属性、事件或索引器。接口不能包含常量、字段、运算符、实例构造函数、析构函数或类型,也不能包含任何种类的静态成员。

所有接口成员都隐式地具有 public 访问属性。接口成员声明中包含任何修饰符都属于编译时错误。具体来说不能使用修饰符 abstractpublicprotectedinternalprivatevirtualoverride static 来声明接口成员。

在以下示例中

public delegate void StringListEvent(IStringList sender);

public interface IStringList
{
void Add(string s);

阅读(2615) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册