ITPub博客

首页 > Linux操作系统 > Linux操作系统 > c#多态性

c#多态性

原创 Linux操作系统 作者:wisdomone1 时间:2012-03-08 17:28:12 0 删除 编辑
class Program
    {
        static void Main(string[] args)
        {
            Car c1 = new Car();
            c1.F();//通过new隐藏了父类的同名方法
            Console.ReadKey();
            c1.G();//重写了父类的G方法
            Console.ReadKey();
            Vehicle v1 = c1;
            v1.F();//最终到底是调用CAR类还是调用父类VECHICLE类的F方法呢 //这个会调用父类的F方法,而不是子类的NEW同名方法
            Console.ReadKey();
            v1.G();//同上 //最终调用还是C1的重写方法G,这就是运行时状态决定,
            Console.ReadKey();
        }
    }


 public class Vehicle
    {
        //编译时多态性;是通过重载实现的,即方法重载和操作符重载

        //运行时多态性,是直到系统运行时,才根据实际情况决定实现何种操作.这种多态性是通过虚成员实现
        //编译多态性为我们提供了运行速度快,而运行时多态则有高度灵活和抽象的特点
        public void F()
        {
            Console.WriteLine("vehicle类的F方法,它是非虚virtual方法");
        }
        public virtual void G()
        {
            Console.WriteLine("vehicle类的G方法,它是虚virtual方法");
        }
    }

    class Car : Vehicle
    {
        new public void  F() //
        {
            Console.WriteLine("通过NEW其实是隐藏了父类同名的方法F,而非重写");
        }

        public override void G()
        {
            Console.WriteLine("重写了vehicle类的G方法,实现多态性");
        }
    }

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9240380/viewspace-718083/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
提供针对oracle初学者及进阶的数据库培训,欢迎大家咨询: 微信: wisdomone 微信公众号: lovedb 工作经历: 中国普天 北京科蓝 北京云和恩墨 北京神州新桥

注册时间:2008-04-04

  • 博文量
    2189
  • 访问量
    12690138