CC基础知识面向对象的四大特性

金牌白癜风专家 http://pf.39.net/bdfyy/qsnbdf/

引言

C++完全支持面向对象的程序设计,包括面向对象开发的四大特性:

封装

数据抽象

继承

多态

本文就针对数据抽象和动态进行说明!

数据抽象

数据抽象:指的是只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节;是一种依赖于接口和实现分离的编程(设计)技术。

C++类为数据抽象提供了可能。它们向外界提供了大量用于操作对象数据的公共方法,也就是说,外界实际上并不清楚类的内部实现。

例如,您的程序可以调用sort()函数,而不需要知道函数中排序数据所用到的算法。实际上,函数排序的底层实现会因库的版本不同而有所差异,只要接口不变,函数调用就可以照常工作。

在C++中,我们使用类来定义我们自己的抽象数据类型(ADT)。您可以使用类iostream的cout对象来输出数据到标准输出,如下所示:

在这里,您不需要理解cout是如何在用户的屏幕上显示文本。您只需要知道公共接口即可,cout的底层实现可以自由改变。

数据抽象有两个重要的优势:

类的内部受到保护,不会因无意的用户级错误导致对象状态受损。

类实现可能随着时间的推移而发生变化,以便应对不断变化的需求,或者应对那些要求不改变用户级代码的错误报告。

如果只在类的私有部分定义数据成员,编写该类的作者就可以随意更改数据。如果实现发生改变,则只需要检查类的代码,看看这个改变会导致哪些影响。如果数据是公有的,则任何直接访问旧表示形式的数据成员的函数都可能受到影响。

C++程序中,任何带有公有和私有成员的类都可以作为数据抽象的实例。例如:

当上面的代码被编译和执行时,它会产生下列结果:

上面的类把数字相加,并返回总和。公有成员addNum和getTotal是对外的接口,用户需要知道它们以便使用类。私有成员total是用户不需要了解的,但又是类能正常工作所必需的。

实例分析:抽象把代码分离为接口和实现。所以在设计组件时,必须保持接口独立于实现,这样,如果改变底层实现,接口也将保持不变。在这种情况下,不管任何程序使用接口,接口都不会受到影响,只需要将最新的实现重新编译即可。

C++多态

C++多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。其实现方式师通过虚函数(virtual函数)来实现。

下面的实例中,基类Shape被派生为两个类(一个通过虚函数来实现多多态,一个不使用虚函数,仅仅是对父函数进行静态链接),如下所示:

当上面的代码被编译和执行时,产生结果如下:

如上述实例:每个子类都有一个函数area()的独立实现。这就是多态的一般使用方式。有了多态,您可以有多个不同的类,都带有同一个名称但具有不同实现的函数,函数的参数甚至可以是相同的。




转载请注明:http://www.nydjfy.com/jbjj/jbjj/16053.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了