面向对象继承.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象继承

第三部分 面向对象的程序设计 继承 第三部分 面向对象的程序设计 3.2 继承 继承是面向对象设计的重要功能之一,它是软件复用的一种形式,减少了软件开发时间,提高了软件的质量。 类的继承就是根据一个类创建一个新类的过程。 第三部分 面向对象的程序设计 程序分析 第三部分 面向对象的程序设计 第三部分 面向对象的程序设计 从对客观世界的认识的角度来看,继承体现的是客观事物之间的层次关系。 子类继承父类的全部特点,并具有自己独自的特征。 父类的内涵少,外延大;子类相对与父类来说,内涵大,外延少 第三部分 面向对象的程序设计 代码编写 1、单继承的定义 (1)格式如下: class派生类名:继承方式基类名 { 派生类新定义成员; }; 继承方式:决定了父类成员被继承为子类的成员的访问控制属性 第三部分 面向对象的程序设计 第三部分 面向对象的程序设计 class Person { private: char name[20]; char sex; void show() { cout“姓名”name“性别”sexendl; } }; class Student :public Person { private: int number; char grade[20]; }; class Teacher:public Person { private: char major[20]; char professional_post[20]; }; class Management:public Person { private: char post[20]; }; 第三部分 面向对象的程序设计 (2)派生类的成员 继承自父类的数据成员——name,sex 继承自父类的函数成员——show 派生类中新添加的数据成员——number,grade 派生类中新添加的函数成员 void Manegement::changepost(char *np) { strcpy(post,np); } 第三部分 面向对象的程序设计 (3)派生类中对父类函数成员的重定义 当从父类继承的成员函数不能满足派生类的需求的时候,我们可以在派生类中对该函数进行重定义 这个函数的数据类型,函数名,形参表应该和父类的函数完全一致,区别于函数重载 void Student::show() { cout“学生姓名”name“学生学号”number“学生班级”gradeendl; } 第三部分 面向对象的程序设计 (4)派生类对象的成员访问 派生类的对象访问的是派生类的成员 如果要访问基类的成员,要使用作用域运算符 对象.基类名::成员名(); student s1; s1.show(); s1.Person::show(); 第三部分 面向对象的程序设计 2、 派生类的构造和析构 基类的构造函数和析构函数都不被继承,需要在派生类中重新定义。 (1) 派生类的构造函数 派生类的构造函数既要完成对派生类的新定义数据成员的初始化,也要完成对继承自父类的成员的初始化。 父类的非私有成员虽然可以在派生类中直接进行初始化,但是一般基类的成员是调用基类的构造函数进行初始化的。这样避免了类和类之间的干扰。 第三部分 面向对象的程序设计 派生类构造函数的一般格式如下: 派生类名(派生类构造函数总参数表):基类构造函数(参数表1) { 派生类中数据成员初始化 }; 注意: (1)总参数表中给出了所有的参数 (2)如果调用的是基类的无参的构造函数,可以不使用初始化表。 第三部分 面向对象的程序设计 class Person { private: char name[20]; char sex; public: Person(char*na,char*s) { strcpy(name,na); strcpy(sex,s); } void show() { cout“姓名”name“性别”sexendl; } }; 第三部分 面向对象的程序设计 class Student:public Person { public: Student(char*na,char*s,int nu,char*g):Person(na,s) { number=number; strcpy(grade,g); } } 第三部分 面向对象的程序设计 (2)构造函数的调用 创建派生类对象时,先调用基类的构造函数,再调用派生类的构造函数 没有初始化表的时候,自动调用基类的无参构造函数 Student s1(“张三”,”男”,1001,”软件”); 第三部分 面向对象的程序设计 (3) 析构函数 派生类析构函数执行时将自动调用基类的析构函数,因此不必显式调用。 派生类构

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档