C++课件第9章继承.doc

C++课件第9章继承.doc

ID:59007573

大小:68.00 KB

页数:17页

时间:2020-09-15

C++课件第9章继承.doc_第1页
C++课件第9章继承.doc_第2页
C++课件第9章继承.doc_第3页
C++课件第9章继承.doc_第4页
C++课件第9章继承.doc_第5页
资源描述:

《C++课件第9章继承.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第九章面向对象1--继承这一章的内容包括:n基类和派生类n派生类的构造函数/析构函数n子类型化和类型适应n多继承n虚基类一、基类和派生类1.概念通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。  在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。 

2、 2.语法  单继承的定义格式如下:  class派生类名:继承方式基类名  {  //派生类新定义成员  };  其中,<派生类名>是新定义的一个类的名字,它是从<基类名>中派生的,并且按指定的<继承方式>派生的。<继承方式>常使用如下三种关键字给予表示:  public表示公有基类;  private表示私有基类;  protected表示保护基类;示例:classMyDate:publicDate1  {  //派生类新定义成员变量或函数  };//派生类新定义成员变量(或函数)初始化(或实

3、现)3派生类的三种继承方式  公有继承(public)、私有继承(private)、保护继承(protected)是三种继承方式。(1)公有继承(public)  公有继承的特点是基类的private、public和protected成员作为派生类的成员时,它们都保持原有的状态。(2)私有继承(private)  私有继承的特点是基类的public成员和protected成员,在派生类都变为私有成员。基类的原私有成员仍为派生类的私有成员(3)保护继承(protected)  保护继承的特点是基类的

4、public成员和protected成员,在派生类都变为保护成员。基类的原私有成员仍为派生类的私有成员。下表列出三种不同的继承方式的基类特性和派生类特性: 继承方式基类成员派生类成员公有继承publicprotectedprivatepublicprotectedprivate私有继承publicprotectedprivate变为private变为privateprivate保护继承publicprotectedprivate变为protectedprotectedprivate对于单级继承来说

5、,讨论保护继承与私有继承的区别意义是不大的,他们的区别只在多级继承的情况中体现。私有继承在一些特定场合下可用于表示类的组成关系。保护继承与私有继承在实际编程中是极其少见的。Q1:C++默认的继承方式?对于C++的类(class),默认的继承方式是私有继承(private),而最常用的继承方式是公有继承(public)。对于C++的结构体(struct)默认的继承方式是公有继承(public)。   4.基类与派生类的关系  任何一个类都可以派生出一个新类,派生类也可以再派生出新类,因此,基类和派生

6、类是相对而言的。  基类与派生类之间的关系可以有如下几种描述,了解这些关系有助于指导实际编程工作:(1)派生类是基类的具体化  类的层次通常反映了客观世界中某种真实的模型。在这种情况下,不难看出:基类是对若干个派生类的抽象,而派生类是基类的具体化。基类抽取了它的派生类的公共特征,而派生类通过增加行为将抽象类变为某种有用的类型。(2)派生类是基类定义的延续  先定义一个抽象基类,该基类中有些操作并未实现。然后定义非抽象的派生类,实现抽象基类中定义的操作。例如,虚函数就属此类情况。这时,派生类是抽象的

7、基类的实现,即可看成是基类定义的延续。这也是派生类的一种常用方法。(3)派生类是基类的组合在多继承时,一个派生类有多于一个的基类,这时派生类将是所有基类行为的组合。比如以前讲过的飞机组成的例子,用组成关系和多继承都可以,但最好使用组成关系。  派生类将其本身与基类区别开来的方法是添加数据成员和成员函数。因此,继承的机制将使得在创建新类时,只需说明新类与已有类的区别,从而大量原有的程序代码都可以复用,所以有人称类是“可复用的软件构件”。在实际编程中,一定要注意,继承是软件体系结构方面的问题:(1)派

8、生类最好是基类的一类(isakindof),否则容易出现设计概念错误。(2)继承会增加空间复杂度和时间复杂度,要慎重使用。继承链不要太长(3-5层足矣),要“头轻脚重”,越是顶层的类越要轻巧----最好是完全抽象的虚类。(3)优先使用组成关系(有的书叫聚集、聚合、复合),而不是继承关系解决问题。继承把抽象化角色(基类)和实现化角色(派生类)的关系绑定,使得两个层次之间产生了相互依赖和限制,很难独立地演化,在软件设计中应避免此类问题。组成关系没有这个缺点。(4)基类要“坚固不变”,否

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。