美文网首页
is-a和has-a的区别

is-a和has-a的区别

作者: 明月几何8 | 来源:发表于2020-05-08 17:34 被阅读0次

is a”代表的是类之间的继承关系,比如PC机是计算机,工作站也是计算机。PC机和工作站是两种不同类型的计算机,但都继承了计算机的共同特性。因此在用 Java语言实现时,应该将PC机和工作站定义成两种类,均继承计算机类。

“has a”代表的是对象和它的成员的从属关系。同一种类的对象,通过它们的属性的不同值来区别。比如一台PC机的操作系统是Windows,另一台PC机的操作系统是Linux。操作系统是PC机的一个成员变量,根据这一成员变量的不同值,可以区分不同的PC机对象。
再比如张三和李四都是人,但他们的名字不一样,可以以此区分这两个具体的人。名字应该作为人的成员变量。如果将名字叫“张三”的人和名字叫“李四”的人分别定义成两个类,均继承“人”这个类,显然是不合理的。

is a 的意识是如果A是B,那么B就是A的基类。比如:等边三角形是使是三角形,那么,三角形就是等边三角形的基类。
has a 是如果A中有B,那么,B就是A的组成部分

如果你确定两件对象之间是is-a的关系,那么此时你应该使用继承;比如菱形、圆形和方形都是形状的一种,那么他们都应该从形状类继承而不是聚合。
如果你确定两件对象之间是has-a的关系,那么此时你应该使用聚合;比如电脑是由显示器、CPU、硬盘等组成的,那么你应该把显示器、CPU、硬盘这些类聚合成电脑类,而不是从电脑类继承。

相关文章

  • is-a和has-a的区别

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

  • Is-a & Has-a

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

  • 练习 42 Is-A, Has-A, 对象和类 Learn Py

    练习 42. Is-A, Has-A, 对象和类 你必须理解类和对象的区别,这是一个很重要的概念。不过问题是,类和...

  • [oop]IS-A,IS-LIKE-A,HAS-A的区别

    IS-A 代表类与类之间的继承关系 在知识表示、面向对象程序设计与面向对象设计的领域里,is-a英语,包含架构)指...

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

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

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

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

  • 扑克游戏

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

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

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

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

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

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

网友评论

      本文标题:is-a和has-a的区别

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