美文网首页
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

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