面向对象_is-a,has-a,like-a是什么

转载 2016年08月07日 16:37:13

http://m.blog.csdn.net/article/details?id=51174122

1、is-a,has-a,like-a是什么

在面向对象设计的领域里,有若干种设计思路,主要有如下三种: 
is-ahas-alike-a 
java中在类、接口、抽象类中有很多体现。 
了解java看这里:什么是Java 
了解类和对象看这里:类、对象到底有什么秘密 
了解接口和抽象类看这里:接口和抽象类有什么区别

2、is-a是什么

is-a,顾名思义,是一个,代表继承关系。 
如果A is-a B,那么B就是A的父类。 
一个类完全包含另一个类的所有属性及行为。 
例如PC机是计算机,工作站也是计算机,PC机和工作站是两种不同类型的计算机,但都继承了计算机的共同特性。因此在用Java语言实现时,应该将PC机和工作站定义成两种类,均继承计算机类。 
了解更多继承看这里:java类的继承有什么意义

3、has-a是什么

has-a,顾名思义,有一个,代表从属关系。 
如果A has a B,那么B就是A的组成部分。 
同一种类的对象,通过它们的属性的不同值来区别。 
例如一台PC机的操作系统是Windows,另一台PC机的操作系统是Linux。操作系统是PC机的一个成员变量,根据这一成员变量的不同值,可以区分不同的PC机对象。

4、 like-a是什么

like-a,顾名思义,像一个,代表组合关系。 
如果A like a B,那么B就是A的接口。 
新类型有老类型的接口,但还包含其他函数,所以不能说它们完全相同。 
例如一台手机可以说是一个微型计算机,但是手机的通讯功能显然不是计算机具备的行为,所以手机继承了计算机的特性,同时需要实现通讯功能,而通讯功能需要作为单独接口,而不是计算机的行为。

5、is-a,has-a,like-a如何应用

如果你确定两件对象之间是is-a的关系,那么此时你应该使用继承;比如菱形、圆形和方形都是形状的一种,那么他们都应该从形状类继承。 
如果你确定两件对象之间是has-a的关系,那么此时你应该使用聚合;比如电脑是由显示器、CPU、硬盘等组成的,那么你应该把显示器、CPU、硬盘这些类聚合成电脑类。 
如果你确定两件对象之间是like-a的关系,那么此时你应该使用组合;比如空调继承于制冷机,但它同时有加热功能,那么你应该把让空调继承制冷机类,并实现加热接口。


is-a、has-a和like-a、组合、聚合和继承 两组概念的区别

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

Java is-a、has-a和like-a、组合、聚合和继承 两组概念的区别

is a 代表的是类之间的继承关系,比如PC机是计算机,工作站也是计算机。PC机和工作站是两种不同类型的计算机,但都继承了计算机的共同特性。因此在用 Java语言实现时,应该将PC机和工作站定义成两种...
  • cbk861110
  • cbk861110
  • 2013-06-05 10:07:41
  • 13506

windows10使用Minikube安装kubernetes

Tutorial : Getting Started with Kubernetes on your Windows Laptop with Minikube   https://rominiran...
  • guyue35
  • guyue35
  • 2017-01-20 10:51:55
  • 5867

Java千百问_05面向对象(006)_is-a,has-a,like-a是什么

点击进入_更多_Java千百问1、is-a,has-a,like-a是什么在面向对象设计的领域里,有若干种设计思路,主要有如下三种: is-a、has-a、like-a java中在类、接口、抽象...
  • ooppookid
  • ooppookid
  • 2016-04-17 17:18:13
  • 8989

OOP编程之is-a、has-a和is-like-a之间的关系

111
  • likai503819723
  • likai503819723
  • 2014-07-07 10:20:15
  • 2399

Java千百问_05面向对象(006)_is-a,has-a,like-a是什么

1、is-a,has-a,like-a是什么在面向对象设计的领域里,有若干种设计思路,主要有例如以下三种: is-a、has-a、like-a java中在类、接口、抽象类中有非常多体现。了解java...
  • zha0zha0zha
  • zha0zha0zha
  • 2018-03-22 01:23:47
  • 17

面向对象_is-a,has-a,like-a是什么

http://m.blog.csdn.net/article/details?id=51174122 1、is-a,has-a,like-a是什么 在面向对象设计的领域里,有若干种...
  • forlong401
  • forlong401
  • 2016-08-07 16:37:13
  • 905

面向对象里面使用use-a, has-a, is-a和实现关系支持优秀的设计

has-a 就是这样:组合关系 C/C++ code ? 1 2 3 4 5 6 7 8 cl...
  • wangxmin2005
  • wangxmin2005
  • 2013-12-19 11:26:07
  • 835

是一个(is-a)与像是一个(is-like-a)关系

对于继承可能会引发某种争论:继承应该只重载基类的方法(而并不添加在基类中没有的新 方法)吗?如果这样做,就意味着导出类和基类是完全相同的类型,因为它们具有完全相同 的接口。结果你可以用一个导出类对...
  • u011712914
  • u011712914
  • 2013-08-16 12:26:34
  • 945

面向对象(006)_is-a,has-a,like-a是什么

1、is-a,has-a,like-a是什么 在面向对象设计的领域里,有若干种设计思路,主要有如下三种:  is-a、has-a、like-a  Java中在类、接口、抽象类中有很多体现。 ...
  • u013165110
  • u013165110
  • 2017-08-02 11:49:15
  • 112
收藏助手
不良信息举报
您举报文章:面向对象_is-a,has-a,like-a是什么
举报原因:
原因补充:

(最多只允许输入30个字)