多态
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 //概念:让一个对象能够表现出多种的状态(类型) 6 //实现多态的3种手段:1、虚方法 2、抽象类 3、接口 7 8 Chinese cn1 = new Chinese("韩梅梅"); 9 Chinese cn2 = new Chinese("李雷"); 10 Japanese j1 = new Japanese("树下君"); 11 Japanese j2 = new Japanese("井边子"); 12 Korea k1 = new Korea("金秀贤"); 13 Korea k2 = new Korea("金贤秀"); 14 American a1 = new American("科比布莱恩特"); 15 American a2 = new American("奥尼尔"); 16 Person[] pers = { cn1, cn2, j1, j2, k1, k2, a1, a2, new English("格林"), new English("玛利亚") }; 17 18 for (int i = 0; i < pers.Length; i++) 19 { 20 //if (pers[i] is Chinese) 21 //{ 22 // ((Chinese)pers[i]).SayHello(); 23 //} 24 //else if (pers[i] is Japanese) 25 //{ 26 // ((Japanese)pers[i]).SayHello(); 27 //} 28 //else if (pers[i] is Korea) 29 //{ 30 // ((Korea)pers[i]).SayHello(); 31 //} 32 //else 33 //{ 34 // ((American)pers[i]).SayHello(); 35 //} 36 37 38 pers[i].SayHello(); 39 } 40 Console.ReadKey(); 41 } 42 }

1 public class Person 2 { 3 private string _name; 4 public string Name 5 { 6 get { return _name; } 7 set { _name = value; } 8 } 9 10 public Person(string name) 11 { 12 this.Name = name; 13 } 14 public virtual void SayHello() 15 { 16 Console.WriteLine("我是人类"); 17 } 18 }

1 public class Chinese : Person 2 { 3 public Chinese(string name) 4 : base(name) 5 { 6 7 } 8 9 public override void SayHello() 10 { 11 Console.WriteLine("我是中国人,我叫{0}", this.Name); 12 } 13 }

1 public class Japanese : Person 2 { 3 public Japanese(string name) 4 : base(name) 5 { } 6 7 public override void SayHello() 8 { 9 Console.WriteLine("我是脚盆国人,我叫{0}", this.Name); 10 } 11 }

1 public class Korea : Person 2 { 3 public Korea(string name) 4 : base(name) 5 { 6 7 } 8 9 public override void SayHello() 10 { 11 Console.WriteLine("我是棒之思密达,我叫{0}", this.Name); 12 } 13 }

1 public class American : Person 2 { 3 public American(string name) 4 : base(name) 5 { 6 7 } 8 9 public override void SayHello() 10 { 11 Console.WriteLine("我叫{0},我是米国人", this.Name); 12 } 13 }

1 public class English : Person 2 { 3 public English(string name) 4 : base(name) 5 { } 6 7 public override void SayHello() 8 { 9 Console.WriteLine("我是英国人"); 10 } 11 }