c#面向对象系列3(接口)
接口包含方法、属性、事件、索引等一系列声明,可以让类来实现指定的接口,这个类来实现指定的接口,这个类必须为接口中指定的生命来定义代码。结构也可以实现接口,实现方法与类相同。
接口的定义
修饰符 interface 接口名
{
接口体
}
接口的说明如下:
修饰符:控制接口的存取限制符,与类相同。对接口比较适合的存取限制符是public.
接口名:所声明接口的名称。习惯上,接口用大写的I开始,跟在I后面的字符也是大写的,例IDrivable.
接口体:用于定义接口的成员。接口的成员可以是方法,属性,索引,和事件,不包含字段。所有的成员都不包含访问修饰符,所有的成员都隐式的声明为public,原因是接口只是一组声明——实际实现的成员的代码都定义在实现接口的类或接口中。
在现实生活中,所有的汽车都有启动和停止这2个功能,我们可以分别用start()和Stop()方法表示。现在我们定义一个所有汽车类的接口IDrivable,这个接口声明了上述功能,下面是这个接口的定义:
public interface IDrivable
{
//声明方法
void Start();
void stop();
}
接口的实现
接口是由类来实现的。实现的方法有点像类的派生,在类后面加上一个冒号(;),后面跟上接口名,然后再类中为接口提供接口所声明项的实现代码。
例子:
public Car:IDrivable
{
//在类中为接口声明的start(),stop()编写实现代码
public void Start()
{
Console.WriteLine("车辆启动");
}
public void Stop()
{
Console.WriteLine("汽车停止");
}
}
public Truck:IDrivable
{
//在本类中为接口声明的Start(),stop()编写实现代码
public void Start()
{
Console.writeLine("卡车启动");
}
public void Stop()
{
Console.WriteLine("卡车停止");
}
}
接口只是对某些功能的约定,这些功能的实现由类来完成,至于类如何完成,完全有实现接口的类来决定。在上面的例子中,car类与Truck类都是汽车,但他们如何启动有他们自己决定,只是都实现了IDrivable接口,也就是都具有接口所规划的功能(这里所注重的是这些功能在类中必须能实现),在类中要实现这些功能可以由不同的代码完成.