• C#多态浅析

    在 C# 语言中多态称为运行时多态,也就是在程序运行时自动让父类的实例调用子类中重写的 方法,它并不是在程序编译阶段完成的。

    使用继承实现多态,实际上是指子类在继承父类后,重写了父类的虚方法或抽象方法。

    在创建父类的对象指向每一个子类的时候,根据调用的不同子类中重写的方法产生了不同的执行效果。

    总而言之,使用继承实现多态必须满足以下两个条件。

    • 子类在继承父类时必须有重写的父类的方法。
    • 在调用重写的方法时,必须创建父类的对象指向子类(即子类转换成父类)。

    【实例】根据不同层次(本科生、研究生)的学生打印出不同的专业要求。

    根据题目要求,创建专业信息的抽象类 (Major),并在其中定义学号 (Id)、姓名 (Name),以及打印专业要求的抽象方法 (Requirenwnt)。

    分别使用本科生和研究生类继承专业信息类,并重写其中的打印专业要求的方法。实现的代码如下。

    class Program
    {
        static void Main(string[] args)
        {
            Major major1 = new Undergraduate();
            major1.Id = 1;
            major1.Name = "张晓";
            Console.WriteLine("本科生信息:");
            Console.WriteLine("学号:" + major1.Id + "姓名:" + major1.Name);
            major1.Requirement();
            Major major2 = new Graduate();
            major2.Id = 2;
            major2.Name = "李明";
            Console.WriteLine("研究生信息:");
            Console.WriteLine("学号:" + major2.Id + "姓名:" + major2.Name);
            major2.Requirement();
        }
    }
    abstract class Major
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public abstract void Requirement();
    }
    class Undergraduate :Major
    {
        public override void Requirement()
        {
            Console.WriteLine("本科生学制4年,必须修满48学分");
        }
    }
    class Graduate : Major
    {
        public override void Requirement()
        {
            Console.WriteLine("研究生学制3年,必须修满32学分");
        }
    }

    执行上面的代码,效果如下图所示。

    使用继承实现多态

更多...

加载中...