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

1、is-a是什么

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

如果A is-a B,那么B就是A的父类。

一个类完全包含另一个类的所有属性及行为。

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

2、has-a是什么

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

如果A has a B,那么B就是A的组成部分。

同一种类的对象,通过它们的属性的不同值来区别。

例如一台PC机的操作系统是Windows,另一台PC机的操作系统是Linux。操作系统是PC机的一个成员变量,根据这一成员变量的不同值,可以区分不同的PC机对象。

3、 like-a是什么

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

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

新类型有老类型的接口,但还包含其他函数,所以不能说它们完全相同。

例如一台手机可以说是一个微型计算机,但是手机的通讯功能显然不是计算机具备的行为,所以手机继承了计算机的特性,同时需要实现通讯功能,而通讯功能需要作为单独接口,而不是计算机的行为。

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

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

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

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

上面就是对这三种设计思路的详解,也是面向对象经常用到的,小猿圈加加针对三种设计做了详细的讲解,想要学习具体的设计思路的,可以来小猿圈学习一下,一个自己做的学习网。

java is a like a_小猿圈java之is-a、have-a和like-a的区别相关推荐

  1. java request 处理过程_小猿圈Java开发之从代码看spring mvc请求处理过程

    原标题:小猿圈Java开发之从代码看spring mvc请求处理过程 Java作为编程界的常青树,有自己生存的独到之处,小猿圈java讲师今天就分享一个关于从代码看spring mvc请求处理过程,通 ...

  2. java list 元素去重_小猿圈Java开发之list按照元素某个字段去重详解

    小猿圈Java老师给大家分享一篇关于如何实现Java8中list按照元素的某个字段去重的详细介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们一起来看一下吧. ...

  3. java 后台跳出提示_小猿圈Java初学者练习小案例:猜数字游戏

    对于Java初学者,如果没有好的引导,可能会觉得自己学什么都不好,学什么都不会,这个时候就要给他们一下小的案例,让他们去实践一下,让他们知道自己学的东西是可以用到的,小猿圈java讲师为你准备了Jav ...

  4. java gc 有钱人_小猿圈java之GC垃圾回收机制

    垃圾回收机制是提高性能的重要机制,所以不管学什么语言也好,垃圾回收机制都是有的,也是很重要的,小猿圈这章详解一下java的GC垃圾回收机制,需要用的或者感兴趣的朋友们,可以跟着小编学习一下. 一.GC ...

  5. 判断三角形java代码_小猿圈Java循环嵌套语法的使用介绍

    Java是一直被程序员使用的程序之一,而且应用也是最广泛的一个,很多应用中都会用得到,小猿圈java讲师就为你介绍一下Java循环嵌套语法的使用介绍,希望对你有所帮助. 嵌套循环是指在一个循环语句的循 ...

  6. 小猿圈Java学习心得之Java程序员能力提升在哪

    对于互联网发展的今天,IT行业慢慢变成大多数年轻人发展的目标,不仅前景好,薪资也是越来越高的,而java是行业中一直都需要的技术之一,也促进了大多数朋友在学习java,但是没有好的方向,今天小猿圈ja ...

  7. 猜物品游戏java编程_小猿圈Java初学者练习小案例:猜数字游戏

    对于Java初学者,如果没有好的引导,可能会觉得自己学什么都不好,学什么都不会,这个时候就要给他们一下小的案例,让他们去实践一下,让他们知道自己学的东西是可以用到的,小猿圈java讲师为你准备了Jav ...

  8. 小猿圈Java讲师分享开发9年Java进阶大全

    IT程序员每天都与代码拼死搏斗,加班已成为家常便饭,为了升职加薪还要夜以继日的学习,对于只会ctrl+c和ctrl+v的真的是很是惭愧呀,为了更好的引导正在学习java编程的小伙伴,今天我让小猿圈的J ...

  9. 小猿圈Java学习分享2019Java面试题

    虽然金三银四已经过去了但是我门毕业季马上又要来了,每天有很多同学私聊小猿圈老师,想请教一下面试的技巧,老师只能说面试最重要的还是能力,所以小猿圈就给大家整理了一些出现频率比较高的面试题,希望可以帮助到 ...

  10. java while语句打印三角形_小猿圈Java循环嵌套语法的使用介绍

    Java是一直被程序员使用的程序之一,而且应用也是最广泛的一个,很多应用中都会用得到,小猿圈java讲师就为你介绍一下Java循环嵌套语法的使用介绍,希望对你有所帮助. 嵌套循环是指在一个循环语句的循 ...

最新文章

  1. php 二位数组随机,PHP多维数组 php打乱数组二维数组多维数组的简单实例
  2. 【案例分析】分布式系统的接口幂等性设计!
  3. 『软件工程3』你应该知道的三种原型实现模型:抛弃式、演化式、增量式
  4. putty连虚拟机中Linux出现Access Denied
  5. PAMIE:点击网页中的弹出窗口的按钮
  6. [jQuery基础] jQuery对象 -- 属性操作
  7. Unity3D命令行Build
  8. 无线(互联网)+有线(内网)上外网设置
  9. 计算机组成原理—虚拟存储器的基本概念
  10. Web实训项目--网页设计(附源码)
  11. my top visited webs
  12. u盘插上显示计算机限制,为什么U盘插入电脑后CPU显示100%
  13. 快速实现NBIOT UDP通信
  14. 毛玻璃效果的登录页面
  15. C++控制台程序(文字小游戏)
  16. 数字图像处理:图像金字塔
  17. librosa.load报错。audioread.NoBackendError
  18. 定义一个抽象的Role类 有姓名 年龄 性别等成员变量 .......
  19. postgre创建存储过程_postgre 存储过程
  20. 写给20岁左右的读者朋友

热门文章

  1. 低照度图像修复方法总结
  2. 基于分割的PTD渐进三角网加密滤波(SBF)算法
  3. 树莓派 4B 配置 Ubuntu20.04 和 ROS2
  4. 面试准备JSONP(一)
  5. 关于deployment descripter(web.xml)的认识
  6. 【测试篇】为什么需要测试
  7. git 推送出现 fatal: The remote end hung up unexpectedly 解决方案
  8. centos7.4 update git
  9. 第十二章 演员评论家(Actor-Critic)-强化学习理论学习与代码实现(强化学习导论第二版)
  10. Machine Learning ——Homework3