C#类的接口
接口描述的是可属于任何结构的一组相关功能。
接口可由方法、属性、事件、索引器或这四种成员类型的任意组合构成。
接口不能包含字段。接口成员一定是公共的。
 
当类或结构继承接口时,意味着该类或结构为该接口定义的所有成员提供实现。 接口本身不提供类或结构能够以继承基类功能的方式继承的任何功能。 但是,如果基类实现接口,派生类将继承该实现。
类和结构可以按照类继承基类或结构的类似方式继承接口,但有两个例外:
 
类或结构可继承多个接口。
类或结构继承接口时,仅继承方法名称和签名,因为接口本身不包含实现。
 
如下:
 
interface IEquatable<T>
{
    bool Equals(T obj);
}
 
public class Car : IEquatable<Car>
{
    public string Make {get; set;}
    public string Model { get; set; }
    public string Year { get; set; }

    // Implementation of IEquatable<T> interface
    public bool Equals(Car car)
    {
        if (this.Make == car.Make &&
            this.Model == car.Model &&
            this.Year == car.Year)
        {
            return true;
        }
        else
            return false;
    }
}
接口和接口成员是抽象的;接口不提供默认实现。
接口可以继承其他接口。 类可以通过其继承的基类或接口多次继承某个接口。 在这种情况下,如果将该接口声明为新类的一部分,则该类只能实现该接口一次。 如果没有将继承的接口声明为新类的一部分,其实现将由声明它的基类提供。 基类可以使用虚拟成员实现接口成员;在这种情况下,继承接口的类可通过重写虚拟成员来更改接口行为。 有关虚拟成员的更多信息,请参见多态性
 
 
接口具有下列属性:
  • 接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。
  • 不能直接实例化接口。
  • 接口可以包含事件、索引器、方法和属性。
  • 接口不包含方法的实现。
  • 类和结构可从多个接口继承。
  • 接口自身可从多个接口继承。