欢迎来到天天文库
浏览记录
ID:16348459
大小:55.50 KB
页数:6页
时间:2018-08-09
《第八讲 继承与派生总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第8讲继承与派生在C++中所谓“继承”就是在一个已存在的类的基础上建立一个新的类。已存在的类称为“基类(baseclass)”或“父类(fatherclass)”。新建立的类称为“派生类(derivedclass)”或“子类(sonclass)”。1.类的继承与派生派生类是在基类的基础上产生的特殊类,派生类自动继承了基类的成员。 派生类具有自身的属性和行为,不然就完全等同于基类,这样就没有必要派生新类。 继承是为了避免代码的重复 继承是为了避免代码的重复 派生是为了使新产生的派生类除具有基类的共性之外,还具有其他个性。 设计两个类,一个类描
2、述点,另一个类描述圆。圆由圆心和半径构成,圆类由点类派生而来,其中圆心的特性由点类继承下来。 #include"iostream.h"描述点的类的设计: ①数据成员 点的坐标值(x,y) ②成员函数 根据需要定义。如构造函数、取值函数、设值函数 classPoint{intm_x,m_y;public:Point(intx,inty){m_x=x;m_y=y;}intget_x(){returnm_x;}intget_y(){returnm_y;}};Public继承 公有继承公有继承classCircle:publicPoint{d
3、oubleradius;public:Circle(intx,inty,doubler):Point(x,y){描述圆的类的设计: ①数据成员 圆心(点)、半径 ②成员函数 …计算周长、面积等 radius=r;}doubleArea(void){return3.14*radius*radius;}intget_centreX(){returnget_x();}intget_centreY(){returnget_y();}};voidmain(){intx,y;doubler;cout<<"x=";cin>>x;cout<<"y=";ci
4、n>>y;cout<<"r=";cin>>r;Circlec(x,y,r);cout<<"thecentreoftheCircleisthepoint("<5、则(1)类型兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来替代。 类的兼容性规则中的三种替代情况:voidfun(Base1*ptr)//参数为指向基类对象的指针 {ptr->display();} //"对象指针->成员名"} intmain() { Base1base1;//声明Base1类对象 Base2base2;//声明Base2类对象 Derivedderived;//声明Derived类对象 fun(&base1);//用Base1对象的指针调用fun函数 fun(&base2);//用Base2对象的指针6、调用fun函数fun(&derived);//用Derivedx对象的指针调用fun函数fun(&derived); return0; } classBase1//基类Base1定义 {public: voiddisplay()const {cout<<"Base1::display()"<7、blicBase2//公有派生类Derived定义 {public: voiddisplay()const {cout<<"Derived::display()"<8、; 情况2:派生类对象可初始化基类对象的引用 classB{…} classD:publicB{…} … Bb1,*pb1; Dd1; 情况3:派生类对象的地址可隐含转换为指向基
5、则(1)类型兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来替代。 类的兼容性规则中的三种替代情况:voidfun(Base1*ptr)//参数为指向基类对象的指针 {ptr->display();} //"对象指针->成员名"} intmain() { Base1base1;//声明Base1类对象 Base2base2;//声明Base2类对象 Derivedderived;//声明Derived类对象 fun(&base1);//用Base1对象的指针调用fun函数 fun(&base2);//用Base2对象的指针
6、调用fun函数fun(&derived);//用Derivedx对象的指针调用fun函数fun(&derived); return0; } classBase1//基类Base1定义 {public: voiddisplay()const {cout<<"Base1::display()"<7、blicBase2//公有派生类Derived定义 {public: voiddisplay()const {cout<<"Derived::display()"<8、; 情况2:派生类对象可初始化基类对象的引用 classB{…} classD:publicB{…} … Bb1,*pb1; Dd1; 情况3:派生类对象的地址可隐含转换为指向基
7、blicBase2//公有派生类Derived定义 {public: voiddisplay()const {cout<<"Derived::display()"<8、; 情况2:派生类对象可初始化基类对象的引用 classB{…} classD:publicB{…} … Bb1,*pb1; Dd1; 情况3:派生类对象的地址可隐含转换为指向基
8、; 情况2:派生类对象可初始化基类对象的引用 classB{…} classD:publicB{…} … Bb1,*pb1; Dd1; 情况3:派生类对象的地址可隐含转换为指向基
此文档下载收益归作者所有