里氏替換原則的實現(xiàn)方式:子類可以出現(xiàn)在任何需要父類出現(xiàn)的地方
動態(tài)多態(tài)性:
1.虛方法的動態(tài)多態(tài)性
2.抽象方向的動態(tài)多態(tài)性
3.接口方法的動態(tài)多態(tài)性
動態(tài)多態(tài)性的作用:
1.實現(xiàn)"功能定義"與"功能實現(xiàn)"相脫離,實現(xiàn)代碼進一步靈活性
2.實現(xiàn)"系統(tǒng)設計"與"系統(tǒng)代碼"相脫離,實現(xiàn)代碼穩(wěn)定性,減少系統(tǒng)BUG
using System;
namespace 動態(tài)多態(tài)性
{
? ? ? class Person
? ? ? ?{
? ? ? ? ? ? ? public virtual void Speak(){
? ? ? ? ? ? ? ? ? ? ? ?Console.WriteLine("父類說");
? ? ? ? ? ? ? ?}
? ? ? ? ?}
? ? ? ? class Zhang:Person
? ? ? ? {
? ? ? ? ? ? ? ?public override void Speak ()
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ? ?Console.WriteLine("張說");
? ? ? ? ? ? ? ?}
? ? ? ? ? }
? ? ? ? ? interface IPerson
? ? ? ? ? {
? ? ? ? ? ? ? ? ?void Speak();
? ? ? ? ? ?}
? ? ? ? ? ?interface IPersonTwo
? ? ? ? ? ?{
? ? ? ? ? ? ? ? void Speak();
? ? ? ? ? ?}
? ? ? ? ? class Chinese:IPerson,IPersonTwo
? ? ? ? ? {
? ? ? ? ? ? ? ? void IPerson.Speak(){
? ? ? ? ? ? ? ? ? ? Console.WriteLine ("中國人說中國話");
? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ?void IPersonTwo.Speak(){
? ? ? ? ? ? ? ? ? ? ?Console.WriteLine ("中國人還會說英語");
? ? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ? ? class MainClass
? ? ? ? ?{
? ? ? ? ? ? ? public static void Main (string[] args)
? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ? //虛方法的動態(tài)多態(tài)性
? ? ? ? ? ? ? ? ? ? // Person p = new Zhang();
? ? ? ? ? ? ? ? ? ? ?// p.Speak();
? ? ? ? ? ? ? ? ? ? ?//動態(tài)多態(tài)性之接口
? ? ? ? ? ? ? ? ? ? ?IPerson ip = new Chinese();
? ? ? ? ? ? ? ? ? ? ?ip.Speak ();
? ? ? ? ? ? ? ? ? ? ?IPersonTwo ip2 = new Chinese ();
? ? ? ? ? ? ? ? ? ? ?ip2.Speak ();
? ? ? ? ? ? ? }
? ? ? ? ? ?}
}