在本系列中,我们以,CodeProject上比较火的OOP系列博客为主,进行OOP深入浅出展现。
无论作为软件设计的高手,或者菜鸟,对于架构设计而言,均需要多次重构,取舍,以有利于整个软件项目的健康构建,有些经验是前辈总结的,我们拿来使用即可,有些是团队知识沉淀的,总之复用前人好的思想有利于减少返工。当然,在面试的时候,如果能围绕OOP大谈特谈,自然会加分多多的。
开始阅读本系列博客的预备知识,多态,封装,面向对象编程等,请通过MSDN学习。如下图的术语,您应该耳熟能详的。本系列文章使用c#作为唯一脚本语言。
<李>
<强>数据抽象(数据抽象)强>:数据抽象是对需要操作的物体进行建模的出发点,既对使用对象进行了抽象,隐藏了内部的细节(对使用的最终用户而言)。用户可以非常方便的使用类的方法,数据,而不用关心数据创建、运行逻辑的背后复杂的过程。我们以真实世界为例,当你骑一辆自行车的时候,不用考虑变速齿轮的原理如何驱动链条,车轮吧。
李> <李><强>继承(继承)强>:继承是OOP概念中最流行的一个概念。继承给程序员提供了可复用代码的优势。基类定义好函数逻辑,子类通过继承,可实现直接访问,就想子类自身的方法一样方便。
李> <李><强>数据封装(数据封装)强>:对类的成员变量,成员函数通过访问控制符进行包装,则称为数据封装。访问控制符有公众保护,私人的,内部4种类型。
李> <李><强>多态(多态性)强>:对象可通过传递不同参数实现相同的动作,这种行为我们称之为多态。我们以真实世界为例,“开车”这个方法,对不同类型的用户要提供不同的参数实现多态,如Car.Drive(人),Car.Drive(女人)等。
李> <李><>强消息通信(消息通信)强>:消息通信意味着通过通过消息进行类函数的调用,执行。
李>,
3多态(多态性)
在本节,我们分别用代码片段来阐述各自类型的多态类型:函数重载,早期绑定,编译器的多态。
先创建一个控制台工程,并命名为<代码> InheritanceAndPolymorphism,然后添加类 Overload.cs ,再添加<代码> DisplayOverload 代码>函数。代码>
public class 过载 ,,,{,,,,,,,public void DisplayOverload (int ) { ,,,,,,,,,,,System.Console.WriteLine (“DisplayOverload ”, +,); ,,,,,,,},,,,,,,,public void DisplayOverload (string ) { ,,,,,,,,,,,System.Console.WriteLine (“DisplayOverload ”, +,); ,,,,,,,},,,,,,,,public void DisplayOverload (string ,, int b) { ,,,,,,,,,,,System.Console.WriteLine (“DisplayOverload ”, +, a +, b); ,,,,,,,} ,,,}
<代码>在 Program.cs添加如下代码: 代码>
class 程序 ,,,{,,,,,,,static void Main (string [], args) ,,,,,,,{ ,,,,,,,,,,,Overload Overload =, new 过载(); ,,,,,,,,,,,overload.DisplayOverload (100); ,,,,,,,,,,,overload.DisplayOverload (“method 重载”); ,,,,,,,,,,,overload.DisplayOverload (“method 重载,100); ,,,,,,,,,,,Console.ReadKey ();
,
运行程序,结果如下:
<强> DisplayOverload 100 强> 引用>
<强> DisplayOverload方法重载强>,,
<强> DisplayOverload方法overloading100 强>
深入浅出OOP(一):多态和继承(早期绑定/编译时多态)