继承

来源:转载

     在不同的概念中寻找、识别和建立相互联系是人类智力的一个基础方面。为了了解和理解事物相互作用的方式,我们建立了分级、真值表、网络和其他的相互关系。C++试图采用继承分级方式来捕捉事物间的相互作用。今天将学习以下内容:

  • 什么是继承。
  • 怎样从一个类派生到另一个类。
  • 什么是保护访问(protected access)以及怎么样使用它。

      什么是狗?当你观察你的宠物时,你看到什么?我看到四条腿和一张嘴。生物学家看到的是相互作用的器官的组合,物理学家看到的是相互作用的原子和力,而分类学家则把狗看作是犬类动物的代表。

     现在令我们感兴趣的是最后一种看法,狗是犬类的一种,而犬类动物则是哺乳动物的一种,如此类推。分类学家把动物分成门、纲、目、科、属、种。

     这种分级建立了一种is-a相互相互关系。人事一种(is a)灵长目动物。我们到处都可看到这种关系:客货两用轿车是一种(is a)汽车,而汽车又是一种(is a)车辆。

     当我们说某物是另外一种事物时,我们隐含说它是那种事物的一个特例。也就是说汽车是一种特殊的车辆。

     狗继承了哺乳动物的所有特点,也就是它自动获得了哺乳动物的全部特点。由于它是哺乳动物,因此我们知道它能运动并且能呼吸。根据定义,所有的哺乳动物都会运动和呼吸。狗的狗的概念是它还会吠,摇尾巴,当我最终完成本篇博客的打印档它会吃掉我对本篇的修改,当我想睡觉的时候它会叫……对不起,扯的太远了,言归正传。

      我们可以把狗分成工作型狗(Working)、运动型狗(Sportiing)和看家犬(Terriers)。我们也可以把运动型狗分成捡拾猎物的狗、小哈巴狗等等。最后每一种狗还可进一步细分。例如捡拾猎物的狗可细分为纽芬兰狗和加利福利亚狗(Golden)。

      Golden狗是Retriever的一种,Retriever是运动型狗的一种,运动型狗的一种,因此它是哺乳动物的一种,而哺乳动物又是动物的一种,因而又是生物的一种。这种分类可用同一建模语言(Unified Modeling Language,UML)在图11.1中表示出来。箭头特殊类型指向一般类型。

      C++试图通过允许你从另一类派生定义各个类的方式来表示这种关系。派生是一种表示is-a关系的方式。你从Mammal中派生一个新类Dog。由于Dog类从Marmmal类中继承了运动属性因此你不必显示说明狗是运动的。

      向已有的类添加了新功能后的类叫做原来类的派生。原来的类叫做新类的基类。

      如果Dog类从Mammal类派生而来,那么Mammal类是Dog的基类。派生类是基类的超集。正如狗向哺乳动物添加一些新的特征一样,Dog类也向Mammal类添加了一些方法或数据。

     通常,基类有多个派生类。由于狗、猫和马均是哺乳动物,因此它们的类均是从Mammal类中派生而来的。

动物分级图

 

  

 


分享给朋友:
您可能感兴趣的文章:
随机阅读: