我们称C++为面向对象的编程,前面我们讲了OOP的多态、封装,这一讲我们将学习继承。

 

何谓继承?

能够从已有的类派生出新的类,而派生类继承了原有类(称为基类)的特征,包括方法,然后在此基础上添加派生类的新特性

 

继承在派生类上可以完成的工作:

  • 可以在已有类的基础上添加新功能;
  • 可以给类添加数据
  • 可以修改类方法的行为

 

为何要继承?

首先,OOP的主要目的之一是提供可重用的代码。当开发的项目十分庞大时,重用经过测试的代码将比重新编写代码要好得多,包括节省时间、降低程序出错的可能性

 

继承的高级性(优越性):

传统的C函数库通过预定义、预编译的函数(如strlen()和rand()这些可以在程序中使用的函数)提供了可重用性。很多厂商都提供了专用的C库,这些专用库提供标准C库没有的函数,但是这些函数库有局限性,除非厂商提供了库函数的源代码,否则我们将无法根据自己特定的需求对函数进行扩展或修改,而必须根据库的情况修改自己的程序。即使厂商提供了源代码,在修改时也有一定的风险。

而C++类提供了更高层次的重用性。目前,很多厂商提供了类库,类库由类声明和实现构成。因为类组合了数据表示和类方法,因此提供了比函数库更加完整的程序包。例如,单个类就可以提供用于管理对话框的全部资源。通常,类库是以源代码的方式提供的,这意味着可以对其进行修改,以满足需求。然而,C++提供了比修改代码更好的方法来扩展和修改类——类继承。他能够从已有的类派生出新的类,而派生类继承了原有类(称为基类)的特征,包括方法。正如继承一笔财产要比自己白手起家容易一样,通过继承派生出的类通常比设计新类要容易得多。

此外,相比于需要通过复制原始类代码并对其进行修改给原有类添加功能、添加数据、修改方法行为实现期望的类,继承机制只需提供新特性,甚至不需要访问源代码就可以派生出类,因此不需要访问源代码就可以派生出类。因此,如果购买的类库只提供了类方法的头文件和编译后代码,仍可以使用库中的类派生出新的类。而且可以在不公开实现的情况下将自己的类分发给其他人,同时允许他们在类中添加新特性。

 

上面是关于类继承的引文。

========================兴趣是最好的老师=============================

关于类继承的具体内容,希望大家看书自己理解。我将把key-point贴出来。

【关键词】

基类

派生类

派生类需要自己的构造函数

派生类的权限

3种继承方式:公有继承、保护继承和私有继承

继承:is-a关系

多态公有继承

静态联编和动态联编

虚(成员)函数

访问控制:protected

抽象基类

继承和动态内存分配

 

keypoint1——成员初始化列表

下面是一个TableTennisPlayer类,其用于记录会员的姓名以及是否有球桌:

 1 // tabtenn0.h -- a table-tennis base class
 2 #ifndef TABTENN0_H_
 3 #define TABTENN0_H_
 4 #include <string>
 5 using std::string;
 6 // simple base class
 7 class TableTennisPlayer
 8 {
 9 private:
10     string firstname;
11     string lastname;
12     bool hasTable;
13 public:
14     TableTennisPlayer (const string & fn = "none",
15                        const string & ln = "none", bool ht = false);
16     void Name() const;
17     bool HasTable() const { return hasTable; };
18     void ResetTable(bool v) { hasTable = v; };
19 };
20 #endif
tabletenn0.h

相关文章:

  • 2021-10-30
  • 2021-12-11
  • 2022-12-23
  • 2021-12-01
  • 2022-01-04
  • 2022-12-23
  • 2021-07-30
  • 2022-12-23
猜你喜欢
  • 2021-06-05
  • 2022-12-23
  • 2022-12-23
  • 2021-10-28
  • 2018-01-25
  • 2021-04-16
相关资源
相似解决方案