.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("學生跳");
}
}

抽象類和接口的最大區別:接口是公共的行爲規範,抽象類是公共的實現。

相關文章
相關標籤/搜索