欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#通过虚方法实现方法重写—多态。

程序员文章站 2022-12-15 16:09:07
实例中,可以通过person中的不同类型的对象来实现不同的方法。 ......
class program
    {
        //希望person存的是哪个类的对象就调用哪个类的方法
        //第一步  将父类中对应方法家virtual关键字  变为虚方法(子类可重写)
        //子类中方法用override关键字将父类虚方法重写
        static void main(string[] args)
        {
            person[] person = new person[3];
            person[0] = new american();
            person[1] = new japan();
            person[2] = new chinese();
            for (int i = 0; i < person.length; i++)
            {
                //由于person是person类的,如果我想让每个人说出他的国籍
                //只能判断类型然后强制转换:
                //if (person[0]is american)
                //{
                //    ((american)person[0]).say();
                //}
                //希望person存的是哪个类的对象就调用哪个类的方法
                //第一步  将父类中对应方法家virtual关键字  变为虚方法(子类可重写)
                //子类中方法用override关键字将父类虚方法重写
                person[i].say(); //这句话就体现了多态

            }

        }
    }

    public class person
    {
        public string name { get; set; }
        public int age { get; set; }
        public virtual void say()
        {
            console.write("person");
        }
    }
    public class american:person
    {
        public override void say()
        {
            console.writeline("美国人");
        }
    }
    public class japan:person
    {
        public override void say()
        {
            console.writeline("日本人");
        }
    }
    public class chinese : person
    {
        public override void say()
        {
            console.writeline("中国人");
        }
    }

实例中,可以通过person中的不同类型的对象来实现不同的方法。