欢迎来到天天文库
浏览记录
ID:36206189
大小:4.01 MB
页数:373页
时间:2019-05-07
《c++.net程序设计(中)ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C++.NET程序设计(中)课件设计者:杜茂康2009年9月第5章继承第6章多态性第7章模板与STL第8章异常第5章继承继承使软件复用变得简单、易行,可以通过继承复用已有的程序资源,缩短软件开发的周期。本章主要介绍继承的方式,要注意在继承方式下派生类与基类对象之间的关系,以及派生类构造函数如何提供对基类的构造。5.1继承的概念1、继承的概念以存在的类为基础定义新的类,新类即捅有基类的数据成员和成员函数。Personchar*name;char*id_card_no;boolgender;Studentcharstudent_no;Dateenroll_date;……Facul
2、tyDatehire_date;Degreedegree;……AdministratorDatehire_date;Rankrank;……5.1继承的概念2、继承目的代码重用coderesue描述能力:类属关系广泛存在IsAvs.HasA3、有关概念基类,超类派生类,子类5.1继承的概念4、派生类可实施的对基类的改变增加新的数据成员和成员函数。重载基类的成员函数。重定义基类已有的成员函数。改变基类成员在派生类中的访问属性。5、派生类不能继承基类的以下内容基类的构造函数和析构函数。基类的友元函数。静态数据成员和静态成员函数5.1继承的概念5.2继承方式C++的继承类型可分为公有继
3、承、保护继承和私有继承,也称为公有派生、保护派生和私有派生。不同继承方式会不同程度地影响基类成员在派生类中的访问权限。5.2.1继承方式继承语法形式classB{……};classD:[private
4、protected
5、public]B{……};基类子对象派生类新定义成员继承部分派生部分派生类对象public最常见的派生方式维持基类成员的可访问性派生类不可直接访问基类的private成员,可通过基类的共有成员函数访问5.2.2公有继承例题ch5_1.cppclassbase{intx;public:voidsetx(intn){x=n;}intgetx(){returnx;}
6、voidshowx(){cout<7、();obj.showx();obj.showy();}5.2.2公有继承5.2.3私有继承Private基类的中的public成员在派生类中是private,private成员在派生类中不可访问。【例5】私有继承的例子#includeusingnamespacestd;classBase{intx;public:voidsetx(intn){x=n;}intgetx(){returnx;}voidshowx(){cout<8、}voidsety(){y=getx();}voidshowy(){cout<9、保护成员classB{private:inti;protected:intj;public:intk;};classD:publicB{public:voidf(){i=1;//cannotaccessj=2;k=3;}};voidmain(){Bb;b.i=1;//cannotaccessb.j=2;//cannotaccessb.k=3;}Kkiif()接口私有数据BDjj5.2.5保护继承派生方式为protected的继承称为保护继承,在这种继承方式下,基类的public成员在派生类中
7、();obj.showx();obj.showy();}5.2.2公有继承5.2.3私有继承Private基类的中的public成员在派生类中是private,private成员在派生类中不可访问。【例5】私有继承的例子#includeusingnamespacestd;classBase{intx;public:voidsetx(intn){x=n;}intgetx(){returnx;}voidshowx(){cout<8、}voidsety(){y=getx();}voidshowy(){cout<9、保护成员classB{private:inti;protected:intj;public:intk;};classD:publicB{public:voidf(){i=1;//cannotaccessj=2;k=3;}};voidmain(){Bb;b.i=1;//cannotaccessb.j=2;//cannotaccessb.k=3;}Kkiif()接口私有数据BDjj5.2.5保护继承派生方式为protected的继承称为保护继承,在这种继承方式下,基类的public成员在派生类中
8、}voidsety(){y=getx();}voidshowy(){cout<9、保护成员classB{private:inti;protected:intj;public:intk;};classD:publicB{public:voidf(){i=1;//cannotaccessj=2;k=3;}};voidmain(){Bb;b.i=1;//cannotaccessb.j=2;//cannotaccessb.k=3;}Kkiif()接口私有数据BDjj5.2.5保护继承派生方式为protected的继承称为保护继承,在这种继承方式下,基类的public成员在派生类中
9、保护成员classB{private:inti;protected:intj;public:intk;};classD:publicB{public:voidf(){i=1;//cannotaccessj=2;k=3;}};voidmain(){Bb;b.i=1;//cannotaccessb.j=2;//cannotaccessb.k=3;}Kkiif()接口私有数据BDjj5.2.5保护继承派生方式为protected的继承称为保护继承,在这种继承方式下,基类的public成员在派生类中
此文档下载收益归作者所有