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

1、C#多态的特性使得设计模式成为可能数据库

  二十多种设计模式的都是基于多态编程

2、多态的表现形式设计模式

  1.普通类ide

   子类可以继承父类的全部成员(父类的私有成员子类对象不能直接访问到),包括父类实现的接口已经父类继承的其余类的成员。this

   将方法标记为virtual,表示子类能够重写这个方法(固然也能够不重写);设计

   将方法标记为sealed,表示子类不容许重写这个方法; 对象

   特性:隔代继承,子类对象能访问父类全部的非私有成员;继承

  2.抽象类接口

   能够有实现的成员,也能够有非实现的成员;字符串

   能够有virtual方法,子类能够重写,也能够不重写;

   标记为abstruct的成语必须被子类重写(若是子类也是抽象类能够不重写);

    一个类只要有一个struct成员,那么这个类必定要是抽象类;

   特色:将子类共有的方法加以实现,将非共有的方法标记为abstract方法,以供子类重写

  3.接口

   不能有任何实现的成员,能够有属性(属性的本质是方法),全部的成员方法都是abstract;

   特色:全部实现这个接口的实现类均可以被“接口对象”指向,每一个实现了接口的类的对象都会有接口定义抽象方法的实现,实现统一调度

      (与委托相似,委托实例对象调用的时候,并不清楚具体调用的是哪个方法);

      接口

3、面向接口编程的实例:

FTP地址、用户名、密码要保存到一个地方,配置提供者就提供了一个保存、读取配置的一些类
数据配置提供者接口:
public interface ISettingsProvider
{
string this[string name] { get; set; }//以字符串类型读取、设置配置项的值
string[] Names{get;}//全部配置名
bool NameExists(string name);//判断指定名字的配置是否存在
}

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

4、设计模式

1.模板设计模式:

class Program
{
static void Main(string[] args)
{
Person p = new Student();
p.Play();
Console.ReadKey();
}
}

//模板父类的实现
abstract class Person
{
//子类共同继承的方法
public void Play()
{
for (int i = 0; i < 3; i++)
{
//步骤已经实现好,具体的实现由子类完成
SayHello();
Run();
Jump();
}
}

//要求子类写本身的实现
public abstract void SayHello();
public abstract void Run();
public abstract void Jump();
}

class Student : Person
{
public override void SayHello()
{
Console.WriteLine("学生打招呼");
}

public override void Run()
{
Console.WriteLine("学生跑");
}
public override void Jump()
{
Console.WriteLine("学生跳");
}
}

抽象类和接口的最大区别:接口是公共的行为规范,抽象类是公共的实现。

相关文章
相关标签/搜索