§122派生类 1派生类的定义格式: class派生类名:继承方式基类名1,…继承方式基类名n 派生类新成员声明;/与前面声明一个类时完全相同 继承方式:指定了派生类成员以及类外对象对于从基类 例:假设基类Base1,Base2是已声明的类,声明一个名为Dr1的 派生类,该猫魇奎奥盛忌的权曝生裔来种继承方式: class drl:pu映lge鼻示公线 派生类射熄声示私有继承,是默认方式; protected:表示保护继承。 C++程序设计课件设计制作:徐龙琴
C++程序设计课件 设计制作:徐龙琴 6 §12.2 派生类 ⒈派生类的定义格式: class 派生类名:继承方式 基类名1,…继承方式 基类名n { 派生类新成员声明; //与前面声明一个类时完全相同 }; 例: 假设基类Base1,Base2是已声明的类,声明一个名为Dr1的 派生类,该类从基类Base1,Base2派生而来: class Dr1:public Base1,private Base2 { 派生类新成员声明; }; 继承方式:指定了派生类成员以及类外对象对于从基类 继承来的成员的访问权限。有三种继承方式: public:表示公有继承; private:表示私有继承,是默认方式; protected:表示保护继承
下表是不同继承方式的基类在派生类中的访问权限 继承方式 基类特性继承后在派生类特性 public public 公有继承 protected protected private 不可访问 public private 私有继承 protected private private 不可访问 public protecte 保护继承 protected protected private 不可访问 C++程序设计课件设计制作:徐龙琴 7
C++程序设计课件 设计制作:徐龙琴 7 下表是不同继承方式的基类在派生类中的访问权限 继承方式 基类特性 继承后在派生类特性 公有继承 public public protected protected private 不可访问 私有继承 public private protected private private 不可访问 保护继承 public protected protected protected private 不可访问
从上表可以看出: ①公有继承时:基类成员的访问权限在派生类中不变。于是派 生类的其他成员可以直接访问继承来的公有和 保护成员。其他外部使用者只能通过派生类的 对象访问继承来的公有成员 ②保护继承时:基类成员的访问权限在派生类中全变为保护的 访问方式。于是派生类的其他成员可直接访 问从基类继承来的公有和保护成员,但在类外 部通过派生类的对象无法访问它们 C++程序设计课件设计制作:徐龙琴 8
C++程序设计课件 设计制作:徐龙琴 8 从上表可以看出: ①公有继承时:基类成员的访问权限在派生类中不变。于是派 生类的其他成员可以直接访问继承来的公有和 保护成员。其他外部使用者只能通过派生类的 对象访问继承来的公有成员 ②保护继承时:基类成员的访问权限在派生类中全变为保护的 访问方式。于是派生类的其他成员可直接访 问从基类继承来的公有和保护成员,但在类外 部通过派生类的对象无法访问它们
③私有继承时:基类成员的访问权限在派生类中全变为私有的访 问方式 ④基类中私有成员在派生类中是隐藏的,只能在基类内部访问。 ⑤派生类中的成员不能访问基类中的私有成员,可以访问基类 中的公有成员和保护成员 ⑥派生类中用“类名:成员”访问基类成员 ⑦若派生类定义了与基类同名的成员,若要在派生类中使用基 类同名成员,可用:类名:成员 ⑧派生类对基类的静态成员的访问用:类名::成员 C++程序设计课件设计制作:徐龙琴
C++程序设计课件 设计制作:徐龙琴 9 ③私有继承时:基类成员的访问权限在派生类中全变为私有的访 问方式 ④ 基类中私有成员在派生类中是隐藏的,只能在基类内部访问。 ⑤ 派生类中的成员不能访问基类中的私有成员,可以访问基类 中的公有成员和保护成员 ⑥ 派生类中用“类名 :: 成员”访问基类成员 ⑦ 若派生类定义了与基类同名的成员,若要在派生类中使用基 类同名成员,可用:类名 :: 成员 ⑧ 派生类对基类的静态成员的访问用:类名 :: 成员
2.派生类的构造函数: 派生类的数据成员由所有基类的数据成员与派生类新增 的数据成员共同组成,如果派生类新增成员中包括其他类的 对象(子对象),派生类的数据成员中实际上还间接包括了 这些对象的数据成员。因此,构造派生类的对象时,必须对 基类数据成员、新增数据成员和成员对象的数据成员进行初 始化。派生类的构造函数必须要以合适的初值作为参数,隐 含调用基类和新增对象成员的构造函数,来初始化它们各自 的数据成员,然后再加入新的语句对新增普通数据成员进行 初始化。 C++程序设计课件设计制作:徐龙琴 10
C++程序设计课件 设计制作:徐龙琴 10 ⒉派生类的构造函数: 派生类的数据成员由所有基类的数据成员与派生类新增 的数据成员共同组成,如果派生类新增成员中包括其他类的 对象(子对象),派生类的数据成员中实际上还间接包括了 这些对象的数据成员。因此,构造派生类的对象时,必须对 基类数据成员、新增数据成员和成员对象的数据成员进行初 始化。派生类的构造函数必须要以合适的初值作为参数,隐 含调用基类和新增对象成员的构造函数,来初始化它们各自 的数据成员,然后再加入新的语句对新增普通数据成员进行 初始化