通过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
- 通过C#理解多态
- C#多态的理解
- C#的多态理解
- C#多态的理解
- C#对多态的理解
- C#对多态的理解
- 通过一道笔试题理解c#静态构造函数
- 如何理解C# 多态中的override和new
- C#基础概念 从新理解继承多态
- C# 通过 Observer观察者 设计模式 来理解 抽象类 和 接口 应用在什么地方
- 通过c# 实现自定义属性改变触发自定义事件 ,理解自定义事件及其触发过程
- 通过IL理解C# try catch finally中真正的return 返回值
- 通过代码理解C++虚函数表和多态的实现
- 通过实例理解AOP
- 通过TreeMap理解红黑树
- 通过实例理解AOP
- 通过 C# 简化 APM
- 通过C#命令行&#
- 第十三周项目5-字符串操作:字符统计
- 第三天学习
- 异常处理系列:Exception in thread "main" org.hibernate.HibernateException: Javassist Enhancement failed:cn.
- openwrt安装内核模块* satisfy_dependencies_for
- select 下拉列表可编辑
- 通过C#理解多态
- win7 64bit IIS相关设置
- Problem A: Artificial Intelligence?
- ICP算法(Iterative Closest Point)及VTK实现(改)
- 使用 yumdownloader 下载 srpm
- MFC 主对话框获得tab control子对话框控件的值
- Linux下反汇编指定的函数
- uva 10594(最大流最小费)
- ASP.net应用程序生命周期