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

在面向对象设计的领域里,有若干种设计思路,主要有如下三种:

is-a、has-a、like-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的关系,那么此时你应该使用组合;比如空调继承于制冷机,但它同时有加热功能,那么你应该把让空调继承制冷机类,并实现加热接口。

java is a like a_JAVA基础——is-a 、have-a、和 like-a的区别相关推荐

  1. 学习Java知识应该注意哪些基础原则

    想要做java程序猿,学习起来没有那么快的,尤其是零基础学员,java技术在学习的过程中是比较枯燥的,下面小编就为大家详细的介绍一下学习Java知识应该注意哪些基础原则,方便大家在学习的时候能够更加有 ...

  2. Java培训好不好?零基础可以学吗?

    5g时代的来临,越来越多的人开启智能时代,互联网行业的发展速度越来越快,高薪行业一直受到很多人的关注,尤其是java这一块,很多人都想学习,那么参加Java培训好不好?零基础可以学吗? Java培训好 ...

  3. [Java入门笔记] 面向对象编程基础(二):方法详解

    2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...

  4. 零基础java自学就业_java零基础到就业需要多长时间呢?

    展开全部 先以肯定的语气说明一下自学e68a84e8a2ad62616964757a686964616f31333433663030Java,多久可以找到工作: 按照目前Java的体系来说,Java的 ...

  5. Java面试宝典系列之基础面试题String、变量、类与对象、集合类、SSH(三)

    Java面试宝典之数据结构基础 -- 线性表篇 作者:egg 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef 博客:http://blog.csdn. ...

  6. Java入参关键字_Java基础17-成员变量、return关键字和多参方法

    1.成员变量 在类中声明的变量为成员变量 //Dog类 class Dog{ String name;//成员变量 } public class Test1{ public static void m ...

  7. Java培训分享:零基础怎么学习Java?

    最近几年,有很多小伙伴都比较关注"零基础怎么学习Java?"这个问题,因为很多小伙伴都是从其他行业转型来学Java的,都很担心自己学不会,那么来看看下面的详细介绍吧. 零基础怎么学 ...

  8. 作为一名Java开发者应该掌握的基础知识汇总!

    Java语言作为热门编程语言之一,受到了更多的欢迎.今天小千就为大家介绍一下作为一名Java开发者应该掌握的基础知识. 一.修饰符 java语言中提供了一些修饰符,这些修饰符可以修饰类,变量和方法. ...

  9. Java基础之String,StringBuilder,StringBuffer三者的区别

    Java基础之String,StringBuilder,StringBuffer三者的区别 目录 运行速度方面 线程安全方面 小结 1. 运行速度方面 运行速度,在这方面运行速度快慢为:StringB ...

最新文章

  1. 2009年上半年网络工程师考试下午试卷参考答案(一)
  2. 中国AI应用最新白皮书:四大行业将受AI影响最大,或带来19000亿增益价值
  3. # 中小型网络构建-ACL
  4. linux tar压缩排除某个文件夹或者文件
  5. [html] table中给td设置宽度无效怎么解决?
  6. MVC实战之排球计分(六)—— 使用EF框架,创建Controller,生成数据库。
  7. 马云:员工表现不好,老板要先检讨
  8. Dz插件-Discuz插件-免费Discuz采集伪原创发布插件
  9. ThinkBook 14P Win11网卡驱动掉了-解决方案
  10. Gitlab CI/CD 简单介绍
  11. VIOS查看网卡对应的插槽
  12. shell小数点前不打0_shell十三问:关于${0##*/} 和${0%/*}
  13. 开通共享毛巾机小程序
  14. EditPlus中文版-具有 FTP、FTPS 和 sftp 功能的文本编辑器
  15. ubuntu提示系统缺失字体:symbol、wingdings、wingdings2、wingdings3、webdings,WPS无法正确显示...
  16. Martin Fowler:持续集成(很有参考意义)
  17. mysql打平子表_股民网友加入散户家园的流程表
  18. ArcGIS属性表的计算
  19. Linux网络安全防火墙篇
  20. idea多环境配置及问题解决

热门文章

  1. JavaScript中带有示例的Math.round()方法
  2. 语言之输出png图片_什么是PPML?如何输出PPML文档?
  3. python模型保存save_浅谈keras保存模型中的save()和save_weights()区别
  4. python爬虫哪个选择器好用_Python网络爬虫四大选择器用法原理总结
  5. 如何给SpringBoot配置轻松加密?
  6. 面试题:如何设计一个高并发的系统?
  7. C# Winform 窗体美化(八、Icon)
  8. php5..6中文帮助,6.5. IDE integration
  9. mysql怎么修改表中的文字_mysql表中怎么修改字段?
  10. java中的html标签位置,Java 过滤所有html标签,复制文件到指定位置