接口是一种声明,他规定了一个类要包含的带有指定参数的一系列专门方法。接口本身不包含任何方法的实现代码,只是声明公有方法的签名(也就是说在声明的时候不用public)。在每个实现该接口的类中必须实现每个方法。如: [csharp] public interface IAnimal { //接口中没有方法的实现,也没有public修饰符 void Run(); int Beat(string name); } public class Dog : IAnimal { public Dog() { } //接口的继承类中必须实现接口的所有方法 public void Run() { // TODO } public int Beat(string name) { // TODO } } [/csharp] 抽象类声明了一个或多个没有实现的方法。如果一个方法被声明为抽象方法,所对应的类必须也声明为抽象类。同时,一个抽象类中至少有一个抽象方法,非抽象方法可有可无。在继承该抽象类的派生类中必须实现所有抽象方法。不能创建抽象类的实例。如下: [csharp] public abstract class Animal { protected int height, weight; public void Run() { // TODO } public abstract int Beat(string name); } public class Cat : Animal { public Cat() { } //Cat继承自抽象类Animal,拥有Run()方法,同时必须实现抽象方法Beat()。 public override int Beat(string name) { // TODO } } [/csharp] 接口和抽象类有很多相似之处。由于C#没有多重继承的概念,所以要实现多重继承还必须依靠接口。在很多情况下可以用接口代替抽象类,当然要继承属性那就用接口不行了。