一、C#多态的特性使得设计模式成为可能
二十多种设计模式的都是基于多态
二、多态的表现形式
1.普通类
子类能够继承父类的所有成员(父类的私有成员子类对象不能直接访问到),包括父类实现的接口已经父类继承的其他类的成员。
将方法标记为virtual,表示子类可以重写这个方法(当然也可以不重写);
将方法标记为sealed,表示子类不允许重写这个方法;
特性:隔代继承,子类对象能访问父类所有的非私有成员;
2.抽象类
可以有实现的成员,也可以有非实现的成员;
可以有virtual方法,子类可以重写,也可以不重写;
标记为abstruct的成语必须被子类重写(如果子类也是抽象类可以不重写);
一个类只要有一个struct成员,那么这个类一定要是抽象类;
特点:将子类共有的方法加以实现,将非共有的方法标记为abstract方法,以供子类重写
3.接口
不能有任何实现的成员,可以有属性(属性的本质是方法),所有的成员方法都是abstract;
特点:所有实现这个接口的实现类都可以被“接口对象”指向,每个实现了接口的类的对象都会有接口定义抽象方法的实现,实现统一调度
(与委托类似,委托实例对象调用的时候,并不清楚具体调用的是哪一个方法);
三、面向接口编程的实例:
FTP地址、用户名、密码要保存到一个地方,配置提供者就提供了一个保存、读取配置的一些类
数据配置提供者接口:
public interface ISettingsProvider
{
string this[string name] { get; set; }//以字符串类型读取、设置配置项的值
string[] Names{get;}//所有配置名
bool NameExists(string name);//判断指定名字的配置是否存在
}
//实现这个接口的配置操作可以有多重:文件读取写入,数据库读取写入
原文地址:https://www.cnblogs.com/francis-ray/p/10184120.html