面向对象的3 大特性封装、继承、多态。咱们今天用代码的形式来解释一下这名声赫赫的3大特性。

声明:本文章是为一个朋友而写的,昨天朋友遇见了问题,今天自己思考后,发现问题的本质就是面向对象的3大特性,所以才有了本文……

只要是有过学习高级编程语言的同学应该都知道面向对象这个思想(所谓的高级语言是只:C#/Java/C++,至于c语言是底层语言,底层语言的难度更高……)。

面向对象的3 大特性封装、继承、多态。咱们今天用代码的形式来解释一下这名声赫赫的3大特性。

1、  封装:大家装软件、游戏、甚至操作系统经常会遇见dll的文件,这其实就是封装好的代码,你看不见具体的代码,在程序运行的时候,代码会自己根据规则进入对应的dll文件来获取相应的代码来执行,我做了一个小例子如下:

 

对家关注一下大红对勾的地方,Helper是一个类库的项目,怎么看看类库项目的输出是啥

 

大家看到了输出类型是【类库】,也就是咱们文章开头提到的dll文件。接下来看看FatherClass这个项目(也是一个类库),这个项目的引用中大红对勾的Helper就是咱们Helper项目。那么结论来了:将一些类放在一个类库项目中,类库项目输出为dll文件,再将该文件引用于其他项目这就是对代码的封装(还有一种封装是将属性、方法封装于一个类中,今天对这种封装不做讨论)。

2、继承:

在我的解决方案中有2个类库项目,下图打对沟的

 

FatherClass项目中有一个类FatherClass1,而ChildrenClass项目中有一个类ChildrenClass1,该类就继承自FatherClass1,看代码:

 

这样一来ChildrenClass1这个子类就拥有了FatherClass1父类中的所有方法:

 

这就是继承性,子类中可以啥都不写,只要他有父类,那么即使子类中什么属性和方法都没有,但是你在访问它时,你会发现,只要是它的父类有的它自己全都有(当然有一些属性和方法的访问级别会导致子类无法拥有,但这里不做讨论这种情况)

3、多态:

我们的子类将父类的FatherAdd这个方法重写了(相当于覆盖父类的方法体内容),因为在

父类的FatherAdd方法前有关键字virtual,这是虚方法的意思。

public virtual int FatherAdd(int i)

        {

            int x= Helper.Helper1.Add(i) + FatherInt;

            return x;

        }

咱们看看子类是怎么重写的:

 

  public override int FatherAdd(int i)

        {

            return i + ChildInt;

        }

看完代码,我们发现这里有一个关键字override,这正是重写的关键字。如果FatherClass1这个父类,有很多字子类,那么每一个子类都可以对FatherAdd这个方法重写(因为该方法是虚的),这样就体现了在继承过程中发生了多态这一现象(一句大家都听过的话——龙生九子各不相同,说的就是多态。)

下面我用流程图整体的说一下我写的这个demo.W君可以从这里开始看:

 

这个解决方案有4个项目前3个是类库,第4个是exe.他们之间的调用关系:

WindowEXE应用程序调用ChildrenClass和FatherClass

ChildrenClass调用FatherClass

FatherClass调用Heleper

其中ChildrenClass这个类库就是你要新建并且编码的类库,编写完成后的类库生成dll文件,放入exe程序的调用dll的路径下面。

 

 

 

原文地址:https://www.cnblogs.com/JK1989/p/6688434.html