接口
接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式,就如面向对象程序设计提供的多重抽象化。
c#中的接口
定义:接口是一种约束形式,其中只包括成员定义,不包含成员实现的内容。
目的:接口的主要目的是为不相关的类提供通用的处理服务,由于C#中只允许树形结构中的单继承,即一个类只能继承一个父类,所以接口是让一个类具有两个以上基类的唯一方式。
声明:接口声明的方式与声明类的方式相似,但使用的关键字是interface,而不是 class。
接口只包含方法、委托或事件的签名。方法的实现是在实现接口的类中完成的,如下面的示例所示:
接口成员的定义:与类成员的定义相似,但是要注意:
接口成员不能包含代码实体;
接口成员不能定义字段成员;
类型定义成员是禁止的。
如果要隐藏继承了基接口的成员,可以用关键字new来定义它们,例如:
interface IMyBaseInterface
{ void DoSomething();
}
interface IMyDerivedInterface: IMyBaseInterface
{ new void DoSomething();
}
备注 :
接口可以是命名空间或类的成员,并且可以包含下列成员的签名:
当基类型列表包含基类和接口时,基类必须是列表中的第一项。
有关显式接口实现的更多详细信息和代码示例,请参见显式接口实现(C# 编程指南)。
示例
// keyword_interface_2.cs
// Interface implementation
using System;
interfaceIPoint
{
// Property signatures:
int x{get; set;}
int y{get; set;}
}
class Point : IPoint
{
// Fields:
private int _x;
private int _y;
// Constructor:
public Point(int x, int y)
{
_x = x;
_y = y;
}
// Property implementation:
public int x
{
get { return _x; }
set { _x = value; }
}
public int y
{
get { return _y; }
set { _y = value; }
}
}
class MainClass
{
static void PrintPoint(IPoint p)
{
Console.WriteLine("x={0}, y={1}", p.x, p.y);
}
static void Main()
{
Point p = new Point(2, 3);
Console.Write("My Point: ");
PrintPoint(p);
}
输出My Point: x=2, y=3
来自:http://baike.baidu.com/view/159864.htm 和一个视频 。