C++课件第十一章继承和派生类
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Class B:public A {
private:bb1 protected:bb2 public:bb3 }
保护派生
A private:aa1 protected:aa2 public:aa3
B private:bb1 protected: aa2 bb2 aa3 public: bb3
Class B:protected A {
void display( )
{ cout<<j<<endl;} };
object.display(); 10 object.sub(5); object.display(); 5 object1.display;} 0
定义派生类的基本格式:
class 派生类名:继承权限 基类名
继承权限:public,protected,private
private:bb1 protected:bb2 public:bb3 }
私有派生
A private:aa1 protected:aa2 public:aa3
B private:bb1 aa2 aa3
protected: bb2 publห้องสมุดไป่ตู้c: bb3
Class B: A {
private:bb1 protected:bb2 public:bb3 }
void print( ) const //const成员函数:不能改变类中成 员数据的值,也不能调用类中非 const成员函数
{ cout<<“name:”<<name; cout<<“age:”<<age; cout<<“salary:”<<salary<<endl;
} ~employee( ) { delete [ ]name; } };
被其它函数访问 可以
不可以 不可以
被继承 可以 可以
不可以
无论哪一种继承权限,其基类的private 成员均不能为派生类所继承。但可通过被 同时继承下来的原基类的某些函数间接访 问它们。
公有派生
A private:aa1 protected:aa2 public:aa3
B private:bb1 protected: aa2 bb2 public: aa3 bb3
继承类包含了被继承类中的所有成员, 且有自己的成员。
继承:从一个或多个先前定义过的类(称为基类) 中接受全部或一部分数据(属性)或函数(行为或操 作),并且补充定义新的数据或函数,因而形成一个 新的低层的类(称为派生类)。而该派生类还可用作 更低层派生类的基类。
1 派生类定义的格式
class demo { protected:
派生类构造函数: 使用初始化符表初始化基类中的成员。
{ level=0; }
manager(char *name1, short age1, float salary1,
int level1): employee(name1, age1, salary1)
{ level=level1; }
void print_level( )
– 影响的是被继承的原基类成员的访问权 限
– class定义的默认为private,struct定义的 默认为public
继承权限为public时,称该派生为公有派生。
–基类中的所有public成员在派生类中仍是public成 员,所有protected成员在派生类中仍是protected 成员。
Manager:
除具有employee的属性外,有新的属性。为避免重复定义, 可从employee中派生出manager(派生类)。
class manager: public employee
{ private:
缺省构造函数 ——若基类无缺省构造函数,将出错
int level;
public: manager( )
int j; public:
demo(){j=0} void add(int i)
{ j+=i; }
class child:public demo { public: void sub(int i){j-=i;} };
void main(void) { child object,object1;
object.display(); 0 object.add(10);
{ cout<<“level:”<<level<<endl; }
};
函数
公有方法 构造函数 print 析构函数
Print_level
私有成员
name
函数
age 基类定义部分
salary level
函数 派生类新增部分
void main() {manager m(“xyz",24,1000,2); m.print_level(); m.print(); m.employee::print(); }
2 派生类的使用
#include <string.h> class employee{
private: char *name; short age; float salary;
public: employee( ) { name=0; age=0; salary=0.0; } employee(char *name1, short age1, float salary1) { name=new char[strlen(name1)+1]; strcpy(name,name1); age=age1; salary=salary1; }
第十一章 继承和派生类
类是一种抽象数据类型,是对具有共同属性和行 为的对象(事物)的抽象描述。
房屋
平房
楼房
办公楼 居民楼
顶层的抽象事物具有处于底层的抽象事物的共同特 征,而处于底层的抽象事物除了包含顶层抽象事物的 特征外,还具有自身的我特征。
一个类继承另一个类时,这个类被称为 继承类、派生类或子类,另一个类被称为 被继承类、基类或父类。
继承权限为private时,称该派生为私有派生。
–基类中的public成员和protected成员在派生类中 均变成private成员。
继承权限为protected时,称该派生为保护派 生。
–基类中的public成员和protected成员在派生类中 均变成protected成员。
成员 public protected private