接口类似于类,它可以包含方法、属性、事件和索引器,但是接口中只有成员的声明,接口本身不提供对它所声明的成员的实现。例如,在接口中只有方法的声明,而没有定义方法体,这一点与抽象类中的抽象方法类似。
一个接口定义一个协定,实现某接口的类或结构须遵守该接口定义的协定。例如,某个接口定义了两个方法,则要实现该接口的类必须定义这两个方法的实现,即编写它们的方法体。
例:
using System;
namespace jiekou
{
interface Iflyable //定义接口
{
void fly(); //只有方法声明
}
abstract class Vehicle //定义抽象对象
{
public abstract void Start();//抽象对象不能有方法体
}
class Car: Vehicle //定义了一个类,继承Vehicle这个对象,也就是继承了它的方法
{
public override void Start()//在这里重写了方法Start
{
Console.WriteLine("汽车起步!");
}
}
class Plane : Vehicle,Iflyable
{
Iflyable 成员
}
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Vehicle car = new Car();
Vehicle plane = new Plane();
Iflyable flyer = new Plane();
car.Start();
plane.Start();
fly(flyer);
Console.WriteLine();
}
static void fly(Iflyable flyer)
{
flyer.fly();
}
}
}
namespace jiekou
{
interface Iflyable //定义接口
{
void fly(); //只有方法声明
}
abstract class Vehicle //定义抽象对象
{
public abstract void Start();//抽象对象不能有方法体
}
class Car: Vehicle //定义了一个类,继承Vehicle这个对象,也就是继承了它的方法
{
public override void Start()//在这里重写了方法Start
{
Console.WriteLine("汽车起步!");
}
}
class Plane : Vehicle,Iflyable
{
Iflyable 成员
}
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Vehicle car = new Car();
Vehicle plane = new Plane();
Iflyable flyer = new Plane();
car.Start();
plane.Start();
fly(flyer);
Console.WriteLine();
}
static void fly(Iflyable flyer)
{
flyer.fly();
}
}
}