C#本质论6.0第七章:接口
2021-07-05 04:04
标签:创建 override 应用 inter def ble value tin 源代码 接口能将实现细节和提供的服务完全隔离开。接口既不包括实现,也不包括数据。 要实现的接口和基类名称以逗号分隔,基类在前,接口顺序任意。类可实现多个接口,但只能从一个基类直接派生。一旦某个类声明自己要实现接口,接口的所有成员都必须要实现。抽象类允许提供接口成员的抽象实现。 接口永远不能实例化,不能使用new创建接口,所以接口没有终结器。接口不能包含静态成员。不可以为接口成员显式的使用abstract修饰符。 从实现类型向它的已实现接口的转换是隐式转换,不需要转型操作符。实现类型的实例总是包含接口的全部成员,所以对象总是能成功转换为接口类型。可能有多个类型都实现了同一个接口,所以无法保证从接口向实现类型的向下转型能成功。因此,从接口转换为它的某个实现类型,需要执行一次显式的强制转型。 语法与作用于类时一样,方法的第一个参数是要拓展的接口,该参数必须附加this修饰符。扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。 它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀。 仅当你使用 C#不仅允许为特定类型的实例添加拓展方法,还允许为那些对象的集合添加拓展方法。 类只能从一个基类派生,但是可以实现任意数量的接口。 假定一个组件或应用程序供其他开发者使用,那么在创建它的新版本时不应改动接口。接口在负责实现的类和使用接口的类之间订立了契约,改动接口相当于改动契约,会使基于接口编写的代码失效。 C#本质论6.0第七章:接口 标签:创建 override 应用 inter def ble value tin 源代码 原文地址:https://www.cnblogs.com/zhang-mo/p/9834065.html接口:
概述:
接口实现:(待补)
在实现类和接口之间转换:
interface IReadableSettingProvider
{
string GetSetting(string name,string defaultValue);
}
interface ISettingProvider : IReadableSettingProvider
{
string SetSetting(string name,string value);
}
class FileSettingProvider : ISettingProvider
{
#region ISettingProvider Members
public void SetSetting(string name,string value)
{
//...
}
#endregion
#region IReadableSettingProvider
public void GetSetting(string name,string defaultValue)
{
//...显式实现GetSetting(),必须通过IReadableSettingProvider进行
}
#endregion
}
接口上的拓展方法:
using
指令将命名空间显式导入到源代码中之后,扩展方法才位于范围中。通过接口实现多继承:
版本控制:
下一篇:C#本质论6.0第五章:类