很多人都知道面向对象有三个主要的特点:封装、继承和多态,老师还说这三个特性的顺序不能记错。
多态吗。就是不同的类接受到相同的消息做出不同的动作。
类二:
那么怎么观察多态性呢?就需要在主类下面写点东西了:
这样就会看到如下不同的结果。
要先对数据和细节进行封装封装后的结果就是只提供接口,隐藏实现细节。
我看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();
}
}
}
这样就会看到如下不同的结果。
以前只是听老师和同学说多态怎么怎么的。自己没有真正的实现过,现在自己实现一下,才知道原来多态就是这个一回事情。