里氏替换原则的实现方法:子类可以出现在任何需要父类出现的地方
1.虚方法的动态多态性
2.抽象方法的动态多态性
3.接口方法的动态多态性
动态多态性的作用:
1.实现”功能定义" 与 "功能实现" 相脱离,实现代码进一步灵活性
2.实现"系统设计" 与 "系统代码" 相脱离,实现代码稳定性,减少系统BUG
using System;
namespace 动态多态性 {
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) {
// 动态多态性 - 虚方法
// Person p = new Zhang();
// p.Speak();
// Chinese cn = new Chinese ();
// 动态多态性 - 接口
IPerson ip = new Chinese ();
ip.Speak ();
IPersonTwo ip2 = new Chinese ();
ip2.Speak ();
}
}
}