c#基础学习(0706)之使用虚方法实现多态
使用虚方法实现多态
namespace _0706 { class Program { static void Main(string[] args) { //这个时候调用的是父类的方法 Person p = new Person(); Person p1 = new American();//这个时候调用的是American里面的方法 p.SayNationality(); //Person p1 = new Japanese(); Person[] pers = new Person[5]; pers[0] = new American(); pers[1] = new Chanese(); pers[2] = new Japanese(); pers[3] = new Chanese(); pers[4] = new American(); //遍历pers数组 for (int i = 0; i < pers.Length; i++) { //判断数组类型 //if(pers[i] is American) //{ // ((American)pers[i]).SayNationality(); //}else if(pers[i] is Chanese) //{ // ((Chanese)pers[i]).SayNationality(); //} //else if (pers[i] is Japanese) //{ // ((Japanese)pers[i]).SayNationality(); //} //将上面的判断简化 pers[i].SayNationality();//这句话体现了多态,同样的方法,根据调用的对象不同,体现的内容 } Console.ReadKey(); } } public class Person { public string Name { get; set; } public int Age { get; set; } public string Email { get; set; } //添加一个SayNationality()方法 //第一步:将父类中的对应刚发前加virtual关键字,即:将对应的方法变成“虚方法” public virtual void SayNationality() { Console.WriteLine("地球人"); } } public class American : Person { //通过使用override关键字将父类Person中的虚方法SayNationality重写为子类自己想要的。 //说出自己的国籍 public override void SayNationality() { Console.WriteLine("USA"); } } public class Japanese : Person { public override void SayNationality() { Console.WriteLine("日本"); } } public class Chanese : Person { public override void SayNationality() { Console.WriteLine("中国"); } } }