欢迎来到天天文库
浏览记录
ID:21764424
大小:676.50 KB
页数:21页
时间:2018-10-20
《派生类的概念》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、教学目的与要求:了解什么是继承和派生。掌握派生类的创建过程和派生方式教学内容提要:1、为什么要使用继承;2、单基派生类的声明;3、基类成员在派生类中访问属性4、派生类对基类成员的访问教学重点:单继承的派生类的定义方式和派生方式教学难点:单继承的派生类的定义方式和派生方式教学进度:P111~P123教学过程:第12讲派生类的概念事物的共性与特性继承是面向对象程序设计支持代码重用的重要机制。C++语言中,通过继承,一个新类可以在原有类的基础上派生而来,新类将共享原有类的属性,并且还可以添加新的特性。【12.1为什么要使用继承】在C++语言中,通过继承,可以让一个类拥有另一个类的全部属性,也即让一
2、个类继承另一个类的全部属性。可以把继承过程看成是从一个类派生出一个新类的过程。在已有类的基础上新增自己的特性而产生新类的过程称为派生。派生出来的新类称为派生类或子类;而被继承的类称作基类或父类。一个基类可以派生出多个派生类,一个派生类也可以由多个基类派生而来。称从一个基类派生出一个派生类的过程为单继承;从多个基类派生出一个派生类的过程为多继承。计算机类台式机类便携式类输入设备类输出设备类外部设备类a)单继承b)多继承图单继承与多继承通过单继承派生一个类的一般形式如下:class派生类名:派生方式基类名{派生类新增加的数据成员和成员函数};是通过单继承派生出来的类的名称。用关键字public、
3、private或protected指定,如果省略,系统将默认为私有派生。指明了这个派生类的基类,这个基类必须在声明这个派生类之前已经声明,否则,会导致编译错误。【12.2单继承的派生类声明】例如:classbaseclass{inta,b;public://公有成员};abbaseclass例如:classsubclass:publicbaseclass{intc;public://公有成员};absubclassc基类部分派生类部分派生方式用的关键字public:表示公有派生private:表示私有派生protected:表示保护派生在声明一个派生类时,采用不同的派生方式,从基类继承而来的
4、成员的访问权限在派生类中也有所不同。从已有类派生出新类时,可以在派生类内完成以下几种功能:(1)可以增加新的数据成员;(2)可以增加新的成员函数;(3)可以重新定义基类中已有的成员函数;(4)可以改变现有成员的属性。当采用公有派生时,基类中的公有(public)成员和保护(protected)成员的访问权限在派生类中保持不变,而基类的私有(private)成员无论是在派生类中,还是在类外都是不可访问的。基类的公有成员和保护成员被派生类继承过来,作为派生类的公有成员和保护成员;但基类的私有成员在派生类中不能直接使用。简述【12.3.1公有派生】【12.3基类成员在派生类中的访问属性】#incl
5、udeclassA{public:voidsetx(inta){x=a;}voidsety(intb){y=b;}intgetx()const{returnx;}intgety()const{returny;}protected:intx;private:inty;};classB:publicA{public:intgetsum(){returnx+gety());}//直接访问从基类继承来的保护成员x;但是基//类的私有成员y,只能通过接口函数访问。};公有派生例12-1voidmain(){Bb;b.setx(2);b.sety(3);cout<<″X=″<6、.getx()<<″\tY=″<7、在派生类中不能直接使用。简述【12.3.2私有派生】#includeclassA{public:voidsetx(inta){x=a;}voidsety(intb){y=b;}intgetx()const{returnx;}intgety()const{returny;}protected:intx;private:inty;};classB:privateA{public:voids
6、.getx()<<″\tY=″<7、在派生类中不能直接使用。简述【12.3.2私有派生】#includeclassA{public:voidsetx(inta){x=a;}voidsety(intb){y=b;}intgetx()const{returnx;}intgety()const{returny;}protected:intx;private:inty;};classB:privateA{public:voids
7、在派生类中不能直接使用。简述【12.3.2私有派生】#includeclassA{public:voidsetx(inta){x=a;}voidsety(intb){y=b;}intgetx()const{returnx;}intgety()const{returny;}protected:intx;private:inty;};classB:privateA{public:voids
此文档下载收益归作者所有