NET CLR via C#读书笔记 - 第十三章 接口
1 接口基础介绍
1.1 接口概念
接口是对一组方法签名进行统一命名,但不提供任何实现,除此之外,接口还可定义事件,无参属性和有参属性(C#索引器),C#禁止接口定义任何静态成员和常量(CLR是允许的)。
CLR不支持多继承,接口可以看做是一种缩水版的多继承机制。
1.2 接口继承特点
凡是能够使用具名接口类型实例的地方,都能使用实现了接口的一个类型的实例。
1.3 接口定义
在CLR中,接口定义就是类型定义,CLR将为类型接口对象定义内部数据结构,通过反射机制查询接口类型功能。
接口可在文件范围定义,也可以嵌套定义,定义时也可以指定你所希望赋予的任何可见性和可访问性。
按照约定,接口类型名称统一使用大写字母I开头。
接口定义可以从另一个或多个接口“继承”,接口继承工作方式与类继承不同,只是可以简单理解成“继承”。
1.4 接口继承示例
public sealed class point : IComparable<point>
{
private int m_x, m_y;
public point(int x,int y)
{
m_x = x;
m_y = y;
}
public int CompareTo(point other)
{
return Math.Sign(Math.Sqrt(m_x * m_x + m_y * m_y) - Math.Sqrt(other.m_x * other.m_x + other.m_y * other.m_y));
}
public override string ToString()
{
return string.Format("({0},{1})",m_x.ToString(),m_y.ToString());
}
}