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