小猿圈java之is-a、have-a和like-a的区别

在面向对象的设计领域里,有不少设计思路,主要有三种:is-a、has-a、like-a,这三种在java的类、接口、抽象类中不少体现,这篇文章小猿圈详解一下这三种定义,感兴趣的朋友来看一下这篇文章。java

一、is-a是什么函数

is-a,顾名思义,是一个,表明继承关系。学习

若是A is-a B,那么B就是A的父类。操作系统

一个类彻底包含另外一个类的全部属性及行为。设计

例如PC机是计算机,工做站也是计算机,PC机和工做站是两种不一样类型的计算机,但都继承了计算机的共同特性。所以在用Java语言实现时,应该将PC机和工做站定义成两种类,均继承计算机类。对象

二、has-a是什么继承

has-a,顾名思义,有一个,表明从属关系。接口

若是A has a B,那么B就是A的组成部分。get

同一种类的对象,经过它们的属性的不一样值来区别。变量

例如一台PC机的操做系统是Windows,另外一台PC机的操做系统是Linux。操做系统是PC机的一个成员变量,根据这一成员变量的不一样值,能够区分不一样的PC机对象。

三、 like-a是什么

like-a,顾名思义,像一个,表明组合关系。

若是A like a B,那么B就是A的接口。

新类型有老类型的接口,但还包含其余函数,因此不能说它们彻底相同。

例如一台手机能够说是一个微型计算机,可是手机的通信功能显然不是计算机具有的行为,因此手机继承了计算机的特性,同时须要实现通信功能,而通信功能须要做为单独接口,而不是计算机的行为。

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

若是你肯定两件对象之间是is-a的关系,那么此时你应该使用继承;好比菱形、圆形和方形都是形状的一种,那么他们都应该从形状类继承。

若是你肯定两件对象之间是has-a的关系,那么此时你应该使用聚合;好比电脑是由显示器、CPU、硬盘等组成的,那么你应该把显示器、CPU、硬盘这些类聚合成电脑类。

若是你肯定两件对象之间是like-a的关系,那么此时你应该使用组合;好比空调继承于制冷机,但它同时有加热功能,那么你应该把让空调继承制冷机类,并实现加热接口。

上面就是对这三种设计思路的详解,也是面向对象常常用到的,小猿圈加加针对三种设计作了详细的讲解,想要学习具体的设计思路的,能够来小猿圈学习一下,一个本身作的学习网。

相关文章
相关标签/搜索