第七章继承与派生

时间:2026-01-14

866

C++语言程序设计

第七章 继承与派生

866

C++语言程序设计

本章主要内容 类的继承与派生 类成员的访问控制 单继承与多继承 派生类的构造、析构函数 类成员的标识与访问

866

C++语言程序设计

类的继承与派生保持已有类的特性而构造新类的过程 称为继承。 在已有类的基础上新增自己的特性而 产生新类的过程称为派生。 被继承的已有类称为基类(或父类)。 派生出的新类称为派生类。

866

C++语言程序设计

继承与派生问题举例类 的 继 承 与 派 生工具车 交通工具

汽车

小汽车

卡车

旅行车

轿车

面包车4

866

C++语言程序设计

类 的 继 承 与 派 生

继承与派生问题举例动物

猴子

狮子

猎豹5

866

C++语言程序设计

继承与派生问题举例类 的 继 承 与 派 生

几何形状

矩形6

866

C++语言程序设计

继承与派生问题举例类 的 继 承 与 派 生雇员

兼职技术人员

管理人员

销售人员

销售经理

866

C++语言程序设计

继承与派生的目的类 的 继 承 与 派 生

继承的目的:实现代码重用。 派生的目的:当新的问题出现,原有 程序无法解决(或不能完全解决)时, 需要对原有程序进行改造。

866

C++语言程序设计

派生类的声明类 的 继 承 与 派 生class 派生类名:继承方式 基类名 { 成员声明; }

866

C++语言程序设计

继承方式类 成 员 的 访 问 控 制

不同继承方式的影响主要体现在:– 派生类成员对基类成员的访问权限 – 通过派生类对象对基类成员的访问权限

三种继承方式– 公有继承 – 私有继承 – 保护继承

866

C++语言程序设计

公有继承(public)类 成 员 的 访 问 控 制基类的public和protected成员的访问 属性在派生类中保持不变,但基类的 private成员不可直接访问。 派生类中的成员函数可以直接访问基类 中的public和protected成员,但不能 直接访问基类的private成员。 通过派生类的对象只能访问基类的 public成员。 11

866

C++语言程序设计

例7-1 公有继承举例类 成 员 的 访 问 控 制class Point //基类Point类的声明 {public: //公有函数成员 void InitP(float xx=0, float yy=0) {X=xx;Y=yy;} void Move(float xOff, float yOff) {X+=xOff;Y+=yOff;} float GetX() {return X;} float GetY() {return Y;} private: //私有数据成员 float X,Y; };12

866

class Rectangle: public Point //派生类声明 {

public:

//新增公有函数成员

void InitR(float x, float y, float w, float h) {InitP(x,y);W=w;H=h;}//调用基类公有成员函数 float GetH() {return H;} float GetW() {return W;}

private:};

//新增私有数据成员

float W,H;

866

#include<iostream> #include<cmath> using namecpace std; int main() { Rectangle rect; rect.InitR(2,3,20,10); //

通过派生类对象访问基类公有成员 rect.Move(3,2); cout<<rect.GetX()<<',' <<rect.GetY()<<',' <<rect.GetH()<<',' <<rect.GetW()<<endl; return 0; }

866

C++语言程序设计

私有继承(private)类 成 员 的 访 问 控 制基类的public和protected成员都以 private身份出现在派生类中,但基类 的private成员不可直接访问。 派生类中的成员函数可以直接访问基 类中的public和protected成员,但 不能直接访问基类的private成员。 通过派生类的对象不能直接访问基类 中的任何成员。 15

866

C++语言程序设计

例7-2 私有继承举例类 成 员 的 访 问 控 制class Rectangle: private Point //派生类声明 {public: //新增外部接口 void InitR(float x, float y, float w, float h) {InitP(x,y);W=w;H=h;} //访问基类公有成员 void Move(float xOff, float yOff) {Point::Move(xOff,yOff);} float GetX() {return Point::GetX();} float GetY() {return Point::GetY();} float GetH() {return H;} float GetW() {return W;} private: //新增私有数据 float W,H; };16

…… 此处隐藏:201字,全部文档内容请下载后查看。喜欢就下载吧 ……
第七章继承与派生.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:4.9 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:19元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219