.Net高级技术:对多态的深入理解

一、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);//判断指定名字的配置是否存在
}

//实现这个接口的配置操作可以有多重:文件读取写入,数据库读取写入

  

猜你喜欢

转载自www.cnblogs.com/francis-ray/p/10184120.html