打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C# 类的多态与继承
1.了解什么是多态性

2.如何定义一个虚方法

3.如何重载一个虚方法

4.如何在程序中运用多态性

面向对象程序设计中的另外一个重要概念是多态性。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。 可以把一组对象放到一个数组中,然后调用它们的方法,在这种场合下,多态性作用就体现出来了,这些对象不必是相同类型的对象。当然,如果它们都继承自某个类,你可以把这些派生类,都放到一个数组中。 如果这些对象都有同名方法,就可以调用每个对象的同名方法。本节课将向你介绍如何完成这些事情。 



 
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DrawingObject[] dObj = new DrawingObject[5];
            dObj[0] = new Line();
            dObj[1] = new Circle();
            dObj[2] = new Square();
            dObj[3] = new DrawingObject();
            dObj[4] = new luntai();
            foreach (DrawingObject drawObj in dObj)
            {
                drawObj.Draw();
            }
            Console.ReadLine(); 


        }
    }
/*输出结果
I'm a Line.
I'm a Circle.
I'm a Square.
I'm just a generic drawing object.
I'm a luntai of Circle.
*/

 /*带有虚方法的基类:DrawingObject.cs
定义了DrawingObject类。这是个可以让其他对象继承的基类。该类有一个名为Draw()的方法。Draw()方法带有一个virtual修饰符,该修饰符表明:该基类的派生类可以重载该方法。DrawingObject类的 Draw()方法完成如下事情:输出语句"I'm just a generic drawing object."到控制台。*/
    public class DrawingObject
    {
        public virtual void Draw()
        {
            Console.WriteLine("I'm just a generic drawing object.");
        }
    }

   
    public class Line : DrawingObject
    {
        public override void Draw()
        {
            Console.WriteLine("I'm a Line.");
        }
    }

    public class Circle : DrawingObject
    {
        public override void Draw()
        {
        Console.WriteLine("I'm a Circle.");
        }
    }

    public class Square : DrawingObject
    {
        public override void Draw()
        {
            Console.WriteLine("I'm a Square.");
        }
    }

    public class luntai : Circle
    {

        public override void Draw()
        {
            Console.WriteLine("I'm a luntai of Circle.");
        }
    }
/*     三个类都派生自DrawingObject类。每个类都有一个同名Draw()方法,这些Draw()方法中的每一个都有一个重载修饰符。重载修饰符可让该方法在运行时重载其基类的虚方法,实现这个功能的条件是:通过基类类型的指针变量来引用该类。
第四个类继承派生类 */

}
 
子类父类转换
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DrawingObject[] dObj = new DrawingObject[5];
            dObj[0] = new Line();
            dObj[1] = new Circle();
            dObj[2] = new Square();
            dObj[3] = new DrawingObject();
            dObj[4] = new luntai();
            dObj[3] = new luntai();
            foreach (DrawingObject drawObj in dObj)
            {
                drawObj.Draw();
            }

            luntai nlt = dObj[3] as luntai ;
            nlt.Draw2();
            Console.ReadLine();

        }
    }

    public class DrawingObject
    {
        public virtual void Draw()
        {
            Console.WriteLine("I'm just a generic drawing object.");
        }
    }
       
    public class Line : DrawingObject
    {
        public override void Draw()
        {
            Console.WriteLine("I'm a Line.");
        }
    }
    public class Circle : DrawingObject
    {
        public override void Draw()
        {
        Console.WriteLine("I'm a Circle.");
        }
    }
    public class Square : DrawingObject
    {
        public override void Draw()
        {
            Console.WriteLine("I'm a Square.");
        }
    }
    public class luntai : Circle
    {
        public override void Draw()
        {
            Console.WriteLine("I'm a luntai of Circle.");
        }
        public void Draw2()
        {
            Console.WriteLine("I'm a 2 luntai of Circle.");
        }
    }
}
 
 

 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C#教程第九课:多态性
C#设计模式(10)——组合模式(Composite Pattern)
最简单的C#快速入门教程
虚方法
设计模式系列 - 桥接模式
c#接口作为返回类型怎么理解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服