美文网首页
Is-a & Has-a

Is-a & Has-a

作者: sortinnauto | 来源:发表于2017-09-18 13:31 被阅读0次

在面向对象设计、面向对象程序设计等领域,Is-a描述的是类的父子继承关系。

当一个类S继承另外一个类F时,我们一般会说这是子类S继承父类F,或说类F是类S的父类。换句话说即为

S is a F .

S被包含在F内,或说F包含S。更为一般得说,概念体S物是概念体F物的特殊化,而概念体S物是概念体F物的一般化。

举例:

三角形是一个多边形;外科医生是一个医生;苹果是一个水果······

那如果说

黑板是一个教室。

显然,黑板怎么可能是教室呢?这明显不满足‘Is-a’关系。但是退一步思考,黑板和教室的确是有关联的,这点是不可否认的。只是它们之间的关系并非‘Is-a’,而是‘Has-a’。
如果说

教室有一个黑板。

这样就更加符合逻辑了,在面向对象程序设计中,这表示教室带有黑板的实例变量。也就是说教室会有一个黑板的引用,但是教室并没有继承黑板。


Summary:

在实际面向对象编程过程中,如果想知道某物是否应该继承另一物时,就可以使用‘Is-a’测试来检验。

Is-a测试适用于在继承层次的任何地方。如果你的继承层次树设计得很好,那么所有的子类都应该通过任何一个上层父类的Is-a测试。

参考:

相关文章

  • Is-a & Has-a

    在面向对象设计、面向对象程序设计等领域,Is-a描述的是类的父子继承关系。 当一个类S继承另外一个类F时,我们一般...

  • C++面向对象高级编程_第三周

    类与类之间的关系 组合 composition has-a 关系, 继承 inheritance is-a 关系 ...

  • Effective C++学习笔记(第六章)

    条款32:确定public继承塑模出is-a关系 is-a和has-a是C++类的两个重要关系描述,如果类D基于p...

  • [JAVA]java多继承的替代方案

    在类之间,最常见的关系有:依赖("used-a")、聚合("has-a")、继承("is-a")。(具体见《Jav...

  • is-a和has-a的区别

    is a”代表的是类之间的继承关系,比如PC机是计算机,工作站也是计算机。PC机和工作站是两种不同类型的计算机,但...

  • 扑克游戏

    """发牌 比大小类和类之间(对象之间)的关系: is-a关系 - 继承 has-a关系 - 关联/聚合/合成 u...

  • 继承、组合的一点浅理解

    继承就是is-a;组合就是 contain-a;(聚合就是has-a) 比如:人有一个名字,人也有家庭住址(has...

  • (番外·七)Is-a与Has-a

  • 继承、多态、组合

    一、简介 extends——“is-a”(是一个)的关系是用继承来表达的; “has-a”(有一个)的关系是用组合...

  • 复习JavaSE 4.对象与类

    类的三种关系依赖 uses-a 聚合 has-a 继承 is-a 依赖订单类使用账户类,因为订单类需要询问用户对象...

网友评论

      本文标题:Is-a & Has-a

      本文链接:https://www.haomeiwen.com/subject/vdxbsxtx.html