5:18:38 第七章组合与继承 创建新类时,不必每次都从头重新做起,可以利用已经存 在的类,创建新的类 利用已经存在的类创建新类,有两种方法 组合 继承 本章主要内容 1.组合创建新类的方法 2.继承创建新类的方法 掌握 3.继承方式、访问控制 理解、掌握 4.构造函数与析构函数 掌握 5.继承成员的调整 掌握 6.多重继承、虚拟继承(虚基类继承)
15:13:38 第七章 组合与继承 ➢ 创建新类时,不必每次都从头重新做起,可以利用已经存 在的类,创建新的类 ➢ 利用已经存在的类创建新类,有两种方法 .组合 .继承 本章主要内容 1. 组合创建新类的方法 2. 继承创建新类的方法 ——掌握 3. 继承方式、访问控制 ——理解、掌握 4. 构造函数与析构函数 ——掌握 5. 继承成员的调整 ——掌握 6. 多重继承、虚拟继承(虚基类继承)
§1组合( composition) 15:13:38 新类由已经存在的类的对象组合而成,原有类的对象是新 类的成员对象 //useful.h /composition. h class X 并#inc1ude“ useful.h” int 1 class Y( public: int 1 X0{i=0;} public void set(int iii=ii Ⅹx0bj int readO const [return i; Y0 li=0; int permuted void f(int iii=ii freturn i=i*47 int go const return i void maino[ X是已经存在的类,Y是由X Y yob j; 类的对象组合而成的新类 y0bjf(47); V是外围类,x0b是Y类的公 yob j xbj set(37); 有成员对象
§ 15:13:38 1 组 合(composition) ➢ 新类由已经存在的类的对象组合而成,原有类的对象是新 类的成员对象 例:组合 //useful.h class X{ int i; public: X(){i=0;} void set(int ii){i=ii;} int read()const{return i;} int permute() {return i=i*47;} }; //composition.h #include “useful.h” class Y{ int i; public: X xObj; Y(){i=0;} void f(int ii){i=ii;} int g()const{return i;} }; void main(){ Y yObj; yObj.f(47); yObj.xObj.set(37); } ➢X是已经存在的类,Y是由X 类的对象组合而成的新类 ➢Y是外围类,xObj是Y类的公 有成员对象
成员变量(对象)一般应为 private的 15:13:38 /composition.h #inc1ude“ useful.h class yi int 1 X XOI public: Yoli=0 void f(int ini=ii int gO const return i void permute (x0bJpermute0; 1 // main. cpp #include"composition. h >X是已经存在的类,Y是由X void maino( 类的对象组合而成的新类 Y yob j: 0bj.f(47); Y是外围类,x0bj是Y类的私 yOb j: permute O 有成员对象
15:13:38 ➢成员变量(对象)一般应为private的 //composition.h #include “useful.h” class Y{ int i; X xObj; public: Y(){i=0;} void f(int ii){i=ii;} int g()const{return i;} void permute(){xObj.permute();} }; //main.cpp #include “composition.h” void main(){ Y yObj; yObj.f(47); yObj.permute(); } ➢X是已经存在的类,Y是由X 类的对象组合而成的新类 ➢Y是外围类,xObj是Y类的私 有成员对象
§2继承( Inheritance) 描述类与类之间的“ is a kind of”的关系,是C+中实现 代码重用( code reuse)的重要机制 创建新类时不必从头开始,而把新类作为现有类的扩充或 把新类作为是原有类的一种特殊情况 子类、派生类 原父类、基类、超类 有的类 继承增加)新 部分部分类 类X 类Y >类Y从类X扩充而来,则称类Y继承类X或类Y从类X派生 >类X称做类Y的基类( Base class)、父类( Parent class) 或超类( Super class) 类Y称做类X的派生类 (Derived class:相对于基类)或子 类( Child class:相对于父类或 Sub class:相对于超类)
15:13:38 §2 继承(Inheritance) ➢ 描述类与类之间的“is a kind of”的关系,是C++中实现 代码重用(code reuse)的重要机制 ➢ 创建新类时不必从头开始,而把新类作为现有类的扩充或 把新类作为是原有类的一种特殊情况 父类、基类、超类 类 X 继 承 增 加 部 分 部 分 子类、派生类 类 Y 原 有 的 类 新 类 ➢类Y从类X扩充而来,则称类Y继承类X或类Y从类X派生 ➢类X称做类Y的基类(Base Class)、父类(Parent class) 或超类(Super class) ➢类Y称做类X的派生类(Derived class:相对于基类)或子 类(Child class:相对于父类或Sub Class:相对于超类)
5:18:38 继承的语法 cass新类名:继承方式已有类的类名 ,继承方式已有类名的类名2[,…] private. 扩充的私有成员 protected: 扩充的保护成员 public: 扩充的公有成员
15:13:38 ➢继承的语法 class 新类名:继承方式 已有类的类名 [,继承方式 已有类名的类名2[,…]] { private: 扩充的私有成员 protected: 扩充的保护成员 public: 扩充的公有成员 };