深入浅出OOP(一):多态和继承(早期绑定/编译时多态)

  

在本系列中,我们以,CodeProject上比较火的OOP系列博客为主,进行OOP深入浅出展现。

无论作为软件设计的高手,或者菜鸟,对于架构设计而言,均需要多次重构,取舍,以有利于整个软件项目的健康构建,有些经验是前辈总结的,我们拿来使用即可,有些是团队知识沉淀的,总之复用前人好的思想有利于减少返工。当然,在面试的时候,如果能围绕OOP大谈特谈,自然会加分多多的。

开始阅读本系列博客的预备知识,多态,封装,面向对象编程等,请通过MSDN学习。如下图的术语,您应该耳熟能详的。本系列文章使用c#作为唯一脚本语言。

深入浅出OOP(一):多态和继承(早期绑定/编译时多态)”OOP> </p> <h3> </h3> <h4> 1是什么OOP,以及OOP的优势是什么? </h4> <p> OOP代表的是面向对象编程(面向对象编程),它基于对象的整体进行编程,取代了基于过程函数的编程思想。具体实现是围绕对象进行数据,函数封装,而不是基于逻辑关系.OOP中的对象直达的是一个特定的类型,或者某类型的实例对象,更多时候是一个类。每个类对象的结构基本相似,但是有各自特有的属性和数据值。对象之间可通过对外的接口进行访问:方法,属性等。基于OOP的这些优势,独立的对象可以修改而不会影响到其他对象,这样会比较方便的升级软件减少潜在的错误。软件系统随着时间的推移,会变得越来越大,OOP编程思想有效的提高了系统代码的可读性和管理性。</p> <p>, </p> <p> <img src= <李>

<强>数据抽象(数据抽象):数据抽象是对需要操作的物体进行建模的出发点,既对使用对象进行了抽象,隐藏了内部的细节(对使用的最终用户而言)。用户可以非常方便的使用类的方法,数据,而不用关心数据创建、运行逻辑的背后复杂的过程。我们以真实世界为例,当你骑一辆自行车的时候,不用考虑变速齿轮的原理如何驱动链条,车轮吧。

<李>

<强>继承(继承):继承是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(一):多态和继承(早期绑定/编译时多态)