通过C#理解多态

很多人都知道面向对象有三个主要的特点:封装、继承和多态,老师还说这三个特性的顺序不能记错。

要先对数据和细节进行封装封装后的结果就是只提供接口,隐藏实现细节。

我看C#视频的时候楚老师说“多态可以通过继承抽象类和实现接口来体现”,继承和实现这两对儿字说的专业,小菜就是小菜,大鸟就是大鸟。嘿嘿。

对多态的理解,放在谁身上谁也能说出一点自己的意见,但我想通过C#语言来真正的实现一下。

先定义一个接口:

具体实现是这样的:

namespace InterfacesPolymorphism
{
    interface IDoor
    {
        //一个开门动作和一个关门动作
        void Close();
        void Open();
    }
}

多态吗。就是不同的类接受到相同的消息做出不同的动作。

所以通过定义两个类来观察多态的效果。

类一:

namespace InterfacesPolymorphism
{
     //Door实现IDoor的接口
    class Door:IDoor
    {
        private bool HavePerson = false;
        public void Close()
        {
            if (HavePerson)
                Console.WriteLine("Door的门关上了 ");
        }

        public void Open()
        {
            if (HavePerson)
                Console.WriteLine("Door的门打开了 ");
        }
    }
}

类二:

namespace InterfacesPolymorphism
{
    class Door2:IDoor
    {
        private bool isPassWord = false;
        public void Close()
        {
            if (!isPassWord)
                Console.WriteLine("Dor2关上了!");
        }

        public void Open()
        {
            if(isPassWord)
                Console.WriteLine("Door2打开了!");
        }
    }
}

那么怎么观察多态性呢?就需要在主类下面写点东西了:

class Program
    {
        static void Main(string[] args)
        {
            IDoor[] door = new IDoor[100];
            for (int i = 0; i < 100; i++)
            {
                if (i % 2 == 0)
                    door[i] = new Door();//类一
                else
                    door[i] = new Door2();//类二
                door[i].Close();
                door[i].Open();
            }
        }
    }

这样就会看到如下不同的结果。

以前只是听老师和同学说多态怎么怎么的。自己没有真正的实现过,现在自己实现一下,才知道原来多态就是这个一回事情。


评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值