当前位置:  编程技术>.net/c#/asp.net

C# 多态性的深入理解

    来源: 互联网  发布时间:2014-10-21

    本文导语:  MSDN 上面的定义:通过继承,一个类可以有多种类型:可以用作它自己的类型,任何基类型,或者在实现接口时用作任何接口的类型。从两个方面来说明多态1.在运行时,方法参数和集合或者是数组等位置,派生类的对象都可以...

MSDN 上面的定义:通过继承,一个类可以有多种类型:可以用作它自己的类型,任何基类型,或者在实现接口时用作任何接口的类型。
从两个方面来说明多态
1.在运行时,方法参数和集合或者是数组等位置,派生类的对象都可以作为基类的对象处理,发生此情况时,该对象的声明类型不再与运行时类型相同。
2.基类定义实现虚方法,派生类重写这些方法,在运行时,CLR会查找运行时类型,并且调用派生类重写的方法.
代码如下:

    class Shape
    {
        public virtual void Draw()
        {
            Console.WriteLine("Draw a shape");
        }
    }
    class Circle : Shape
    {
        public override void Draw()
        {
            Console.WriteLine("Draw a circle");
        }
    }
    class Rectangle : Shape
    {
        public override void Draw()
        {
            Console.WriteLine("Draw a Rectangle");
        }
    }
    class Triangle : Shape
    {
        public override void Draw()
        {
            Console.WriteLine("Draw a Triangle");
        }
    }
    class Programm
    {
        static void Main()
        {
            //此次就说明了,派生类对象可以作为基类对象进行处理
            Shape[] shapes =
            {
             new Circle(),
             new Rectangle(),
             new Triangle()
            };

            foreach (Shape s in shapes)
            {
                //调用Draw()方法的时候,调用了派生重写的方法,而不是基类
                s.Draw();
            }
        }
    }


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 各位老兄对java的多态性是如何理解的?java的多态性有什么好处?
  • 请问java中多态性是怎么解决的?
  • 请教一个问题:java为什么没有多态性,这样有什么好处嘛?
  • 有关多态性的一个小问题
  • 简单问题我不懂:关于多态性(多型性),怎么调父类的方法
  • 运行时实现Java的多态性
  • 高手请进入讨论:关于覆盖重载隐藏:隐藏是动态绑定的吗?是多态性吗?
  • 向大家请教一个多态性(Upcasting)的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3