通过C#理解多态

来源:互联网 发布:鱼油哪个牌子好,知乎 编辑:程序博客网 时间:2024/06/08 16:37
很多人都知道面向对象有三个主要的特点:封装、继承和多态,老师还说这三个特性的顺序不能记错。

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

我看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();            }        }    }

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

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


0 0