zl程序教程

您现在的位置是:首页 >  .Net

当前栏目

.NET平台与程序设计【5】类的继承与多态

2023-04-18 15:49:50 时间

类的继承与多态

继承,子类与父类

继承是指 在子类中可以使用父类的一部分功能。
实现继承一般通过以下方式:
父类:class [父类名]{}
子类:class [子类名] : [父类名]

多态,使用虚拟函数实现重写(override)

子类使用父类重名的方法,但是想实现不同功能,我对多态的理解。
这个时候可以使用如下操作:

  • 父类创建虚拟函数:public virtual [数据类型][方法名]{}
  • 子类使用重写(override):public override [数据类型][方法名]{}

举个例子。其中Dog是父类,Poodle是子类。

    class Dog
    {
        public string Name { get; set; }

        public virtual void Bark()//通过使用virtual虚拟函数,可以实现重写
        {
            Console.WriteLine(Name + " : Woof!!");

        }


    }

    class Poodle : Dog
    {
        
        public override void Bark()
        {
            Console.WriteLine(Name + " : Yip!Yip!");
        }//同样是Bark函数,在Poodle这个子类中使用便会变成Yip!Yip!
    }

完整代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Sample05
{
    class Dog
    {
        public string Name { get; set; }

        public virtual void Bark()//通过使用virtual虚拟函数,可以实现重写
        {
            Console.WriteLine(Name + " : Woof!!");

        }


    }

    class Poodle : Dog
    {
        
        public override void Bark()
        {
            Console.WriteLine(Name + " : Yip!Yip!");
        }//同样是Bark函数,在Poodle这个子类中使用便会变成Yip!Yip!
    }

    internal class Program
    {
        static void Main(string[] args)
        {
            Dog mydog = new Dog() { Name = "Doggy" };//这样在new的同时改变属性
            mydog.Bark();

            ////可以在Dog对象中存储Poodle对象
            Dog myPoodle = new Poodle() { Name = "Puppy" };
            myPoodle.Bark();

            Console.ReadLine();

        }
    }
}

运行结果: