namespace 多态 { public class Person { private string _name; public string Name { get { return _name; } set { _name = value; } } public Person(string name) { this.Name = name; } //虚方法 public virtual void SayHello() { Console.WriteLine("我是人类"); } } public class Chinese : Person { public Chinese(string name) : base(name) { } //方法重写 public override void SayHello() { Console.WriteLine("我是中国人,我叫{0}", this.Name); } } public class Japanese : Person { public Japanese(string name) : base(name) { } //方法重写 public override void SayHello() { Console.WriteLine("我是日本人,我叫{0}", this.Name); } } public class Korean : Person { public Korean(string name) : base(name) { } //方法重写 public override void SayHello() { Console.WriteLine("我是韩国人,我叫{0}", this.Name); } } public class American : Person { public American(string name) : base(name) { } //方法重写 public override void SayHello() { Console.WriteLine("我是美国人,我叫{0}", this.Name); } } public class Englishman : Person { public Englishman(string name) : base(name) { } //方法重写 public override void SayHello() { Console.WriteLine("我是英国人,我叫{0}", this.Name); } } }
class Program { static void Main(string[] args) { Chinese cn1 = new Chinese("程家阳"); Chinese cn2 = new Chinese("王旭东"); Japanese j1 = new Japanese("树下君"); Japanese j2 = new Japanese("井边子"); Korean k1 = new Korean("金秀贤"); Korean k2 = new Korean("李钟硕"); American a1 = new American("阿黛尔"); American a2 = new American("小甜甜布兰妮"); Person[] p = { cn1, cn2, j1, j2, k1, k2, a1, a2, new Englishman("格林"),new Englishman("玛利亚") }; for (int i = 0; i < p.Length; i++) { p[i].SayHello(); } Console.ReadLine(); }