多重继承与派生类成员标识多态性与虚函数派生类应用.ppt

多重继承与派生类成员标识多态性与虚函数派生类应用.ppt

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

派生与继承具体例子, person, Baseball player, Employee, supervisor. 继承增加成员包括数据成员(属性)和函数成员(在新的数据上的新的操作) 有时需要重写函数成员,对象变了,相应的操作也应该更改,如上例。注意Overloading和overriding区别。 Overriding基本别虚函数代替 派生类继承基类有三种方式,对派生类访问基类成员的限制 从基类的成员访问控制标识符角度来分析解释 (1)public(公有继承):继承时保持基类中各成员属性不变,并且基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象只能访问基类中的public成员。 (2)private(私有继承):继承时基类中各成员属性均变为private,并且基类中private成员被隐藏。派生类的成员也只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员。 (3)protected(保护性继承):继承时基类中各成员属性均变为protected,并且基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员。 通过具体实例解释各种访问控制的区别,加深同学们的记忆和理解 假设有两个类:Computer和Employee。明显地,这两个类之间不存在"is a"的关系,即Employee不是计算机,它们之间没有继承关系的必要。因此不可能产生代码重用性。但这两个类之间是"has a"关系,即是支持的关系。例如,Employee"has a"Computer。明显地是一种支持关系。这种支持关系落实到代码中,就是在Employee中创建Computer的对象,调用其方法,到达完成某种运算和操作的目的。 Employee和Manager 类存在的则是"is a"关系,即Manager是Employee。它们之间存在共性,或者共同的属性。Manager是Employee的具体化;Employee是Manager的概括和抽象。概括性和抽象性的类,如Employee,在继承中则定义为超类。具体或代表对象特性的类,如Manager,则定义为子类。如果这是一个用来计算雇员工资的程序,那么在超类Employee中,我们应当包括所有子类都应该具有的、与计算工资有关的数据,例如name、employeeID、jobTitle、seniority、baseSalary以及用来计算基本工资部分的方法,如baseSalary()等。在Manager这个子类中,我们不仅继承Employee的所有数据和方法,还增加针对Manager的新的数据,如是否董事会成员boardMember、职务补贴merit等,因为除基本工资的计算之外,这些都影响到具有经理职务雇员的收入。 子类对象可以强制转换为父类或者赋值给父类,按父类来引用子类一般是正确的,这种转换叫做向上强制类型转换。如果说这种转换或者是赋值是直接在对象上进行操作的,那么会发生切割问题,原因是父类对象没有子类自己定义的附加功能 在C++程序员的面试中,经常会出现派生类与基类的构造函数、析构函数的执行顺序。其实这是一个很基本的问题,没有什么难度,只需要记住就OK了 派生类和基类的构造函数析构函数调用次序, 重点 通过这个例子强化派生类基类构造函数析构函数声明定义规则和执行顺序 重点理解多重继承带来的钻石问题:基类成员通过两条不同途径继承到派生类,在派生类中就会有两个基类成员的拷贝,从而造成二义性问题。所以在类的设计过程中尽量避免这种问题的产生。 被屏蔽的基类成员函数可通过类名+作用域标识符(::)来访问。 多重继承存在的意义,往往是功能的叠加,但要注意钻石问题。 指出课本关于作用域操作符使用的错误。 多态的概念 虚函数的语法,基类中的虚函数在派生类中的虚函数特性 例子,通过基类指针触发实现多态特性,并解释为什么需要虚函数,虚函数功能 强调虚函数定义的语法, 函数的三要素要完全一致,否则是重载,构成同名覆盖。 虚函数返回类型如果是类类型指针或引用,可以构成多态 举例子强调上述注意 必须搞懂触发多态的两个要点,缺一不可 课本例子 什么样的成员函数可以声明为虚函数 举例说明基类的析构函数声明为虚函数的必要性 纯虚函数存在的意义 它用于这样的情况:定义一个基类时,会遇到无法定义基类中虚函数的具体实现,其实现依赖于不同的派生类 含有纯虚函数的基类是不能用来定义对象的。纯虚函数没有实现部分,不能产生对象,所以含有纯虚函数的类是抽象类。 定义纯虚函数需

文档评论(0)

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

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

1亿VIP精品文档

相关文档