欢迎来到天天文库
浏览记录
ID:45037365
大小:1.23 MB
页数:41页
时间:2019-11-08
《C++程序设计-lecture8》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、类的继承继承与派生问题举例类的继承继承与派生问题举例类的继承继承与派生的目的继承的目的:实现代码重用。派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。类的继承基类和派生类的概念在继承关系中,新定义的类称为被继承类的派生类或子类,而被继承的类称为新定义类的基类或父类。派生类继承了基类的所有成员。一个派生类也可以作为另一个派生类的基类。类的继承派生类的定义class<派生类名>:[<派生方式>]<基类名>{...//派生类新增加的成员声明列表};说明:派生方式决定
2、了基类的成员在派生类中的访问权限。派生方式共有三种:public、private和protected(缺省值为private)。虽然派生类继承了基类的所有成员,但为了不破坏基类的封装性,无论采用哪种派生方式,基类的私有成员在派生类中都是不可见的,即不允许在派生类的成员函数中访问基类的私有成员。类的继承classCPerson{private:charm_name[12];charm_ID[18];intm_age;public://……};classCStudent:publicCPerson{pri
3、vate:charm_student[22];//学校charm_number[18];//学号//……};类的继承类的访问权限控制回顾public属性:表示数据成员和成员函数是类的公有成员,它们允许被本类的成员函数访问或调用,也允许通过对象访问或调用,是类的外部接口。protected属性:表示数据成员和成员函数是类的保护成员,它们允许被本类的成员函数和派生类的成员函数访问或调用。private属性:表示数据成员和成员函数是类的私有成员,它们只允许被本类的成员函数访问或调用。类的继承三种派生方式的区
4、别采用public派生,基类成员的访问权限在派生类中保持不变,即基类所有的公有或保护成员在派生类中仍为公有或保护成员。public派生最常用。可以在派生类的成员函数中访问基类的非私有成员;可通过派生类的对象直接访问基类的公有成员。采用protected保护派生,基类所有的公有和保护成员在派生类中都成为保护成员,只允许在派生类的成员函数和该派生类的派生类的成员函数中访问基类的非私有成员。采用private私有派生,基类所有的公有和保护成员在派生类中都成为私有成员,只允许在派生类的成员函数中访问基类的非私
5、有成员。private派生很少使用。类的继承例定义类Point,然后定义类Point的派生类Circle。#includeclassPoint//定义基类,表示点{private:intx;inty;public:voidsetPoint(inta,intb){x=a;y=b;};//设置坐标intgetX(){returnx;};//取得X坐标intgetY(){returny;};//取得Y坐标};类的继承classCircle:publicPoint//定义派生类,表示圆
6、{private:intradius;public:voidsetRadius(intr){radius=r;};//设置半径intgetRadius(){returnradius;};//取得半径intgetUpperLeftX(){returngetX()-radius;};//取得外接正方形左上角的X坐标intgetUpperLeftY(){returngetY()+radius;};//取得外接正方形左上角的Y坐标};类的继承main(){Circlec;c.setPoint(200,250)
7、;c.setRadius(100);cout<<"X="<8、50类的继承几点说明派生类Circle通过public派生方式继承了基类Point的所有成员(除私有成员外所有成员的访问权限不变),同时还定义了自己的成员变量和成员函数。若将类Circle的派生方式改为private或protected,则下述语句是非法的:c.setPoint(200,250);无论哪种派生方式,派生类都继承了基类的所有成员,包括私有成员。我们虽然不能在派生类Circle中直接访问私有数据成员x和y,但可以通过继承的公有成员函数getX
8、50类的继承几点说明派生类Circle通过public派生方式继承了基类Point的所有成员(除私有成员外所有成员的访问权限不变),同时还定义了自己的成员变量和成员函数。若将类Circle的派生方式改为private或protected,则下述语句是非法的:c.setPoint(200,250);无论哪种派生方式,派生类都继承了基类的所有成员,包括私有成员。我们虽然不能在派生类Circle中直接访问私有数据成员x和y,但可以通过继承的公有成员函数getX
此文档下载收益归作者所有