C Sharp/Interfaces
< C Sharp
接口是C#的一种类型,是对象和使用者之间的约定(contract)。它只包含方法和属性的声明,不能有数据成员和任何实现。如:
interface IShape
{
double X { get; set; }
double Y { get; set; }
void Draw();
}
.NET Framework通常用大写字母"I"作为接口名字的第一个字符。如果接口只定义了一个主要方法(如上例),则可用"...able"作为接口名字的后缀。如上例可命名为IDrawable
.
实现接口的类需要继承它,并实现所有的方法和属性。如:
class Square : IShape
{
private double _mX, _mY;
public void Draw() { ... }
public double X
{
set { _mX = value; }
get { return _mX; }
}
public double Y
{
set { _mY = value; }
get { return _mY; }
}
}
类可以同时继承多个接口:
class MyClass : Class1, Interface1, Interface2 { ... }
对象可以用接口作为其引用:
class MyClass
{
static void Main()
{
IShape shape = new Square();
shape.Draw();
}
}
接口可以继承其他接口,但不能从类继承:
interface IRotateable
{
void Rotate(double theta);
}
interface IDrawable : IRotateable
{
void Draw();
}
额外细节
编辑接口的成员都是public。
实现类可以把接口的方法定义为虚方法。
接口没有静态方法。
接口可以声明事件和索引器(indexer)。
For those familiar with Java, C#'s interfaces are extremely similar to Java's.