2019独角兽企业重金招聘Python工程师标准>>>

【威哥说】作为一个程序员,我们每天都在“搞”对象,额,“用”对象,感觉那个词都不太好,还是继续向下说,对象之间的关系有的是一对一的,也有一对多的(现实中有才好),他们之间到底是如何的关系,你是不是搞明白了呢?作为初学者,刚开始学习Java的同学一定要自己研究一下本文。

【广告】9月26日开班!!!

【正文】今天给大家讲解对象的一对一和一对多的关系,这个关系是针对初学者的一个讲解,可以帮助大家明确由实际生活转化到代码语句的逻辑。

首先,我们针对一个很常见的现实生活中的问题,咱们就看看最近的一个新闻:“北京现新款公租自行车,扫码出行”,这里估计又会引发一股骑车浪潮。那么此处针对骑车事件,在现实生活中理解为:人蹬车,车就动起来了。那么把这个概念引申到咱们程序中时,就要理解为,动是车的方法,我们人是调用了车的滚动方法,车才跑起来的。同理:比如说人关门,现实生活中就是个关门动作,引申到程序中就是:关门时门才有的行为,人关门其实是在使用门的关闭动作,从而完成门的关闭。体现到代码中来实现的话,首先我们需要一个门抽取出来的Door类:

class Door{ //定义一个关闭方法,门具有关闭方法 void close(){ System.out.println(“门被关闭了”); }; }

现在有个人要关门,那么这里我们就需要一个人的对象:

class Person{ /此时我们要去关闭门,所以我们需要一个门的对象,来让他自己关闭,所以此处我们封装一个Door door 类型的变量在本类中作为成员变量,然后再具体关门的动作里去使用门自己的关闭方法。此处这种关系就叫做对象的一对一关系/ Door door; Void closeDoor(){ door.close(); } }

那么为什么会有对象的一对一关系的建立,我们从几点来进行剖析:1、低耦合每个业务对象单独建立,避免了产生过多依赖,不利于维护2、逻辑独立,任务分配明确每个逻辑对象单独处理本类的业务逻辑,符合实际生活中的真实理念3、符合面向对象思想针对不同的逻辑对象抽取出来不同的类,封装本类中具有的独有方法实现。那么有了对象的一对一关系,我们也大致可以猜到什么是对象的一对多关系了。可不是一个和多个发生关系哦。如上同样是针对关门动作,这里我得关闭多个门的时候,也是人去关闭多个门,分别调用门的关闭方法:
那么如何去存储多个门呢?我们在程序中使用集合来进行存储,声明代码如下;

class Person{ /*此时我们使用集合存储所有数据,关闭时直接遍历集合进行挨个关闭。这里一个人对应多个门的关系我们称为一对多关系。 */ List<Door> door; Void closeDoor(){ For(int i = 0 ; i < door.size();i++){ door.get(i).close(); } } }

一对多关系说白了就是咱们在一个类中定义一个数据集合,一个对应多个数据,就叫一对多。初学者一定要迈过这个坎哦。

转载于:https://my.oschina.net/moliying/blog/744084

Java初学者疑难杂症之:一对一和一对多的关系相关推荐

  1. java一对一关系_Java初学者疑难杂症之:一对一和一对多的关系

    [威哥说]作为一个程序员,我们每天都在"搞"对象,额,"用"对象,感觉那个词都不太好,还是继续向下说,对象之间的关系有的是一对一的,也有一对多的(现实中有才好) ...

  2. MyBatis中resuleMap一对一和一对多属性字段映射

    处理属性和字段不一致 通过resultMap 当Java中实体类属性和数据库字段不一致的时候,我们可以通过resultMap进行映射,例如我们要查询一个user表中的用户的全部信息,在Java中属性是 ...

  3. MyBatis如何实现多表查询(一对一、一对多)

    Mybatis实现多表的查询分为以下两种: 方式一:sqlMapper配置文件 一对一:在resultMap标签中使用 association 标签 一对多:在resultMap 标签中使用colle ...

  4. 【摸鱼神器】基于SSM风格的Java源代码生成器 单表生成 一对一、一对多、多对多连接查询生成

    一.序言 UCode Cms 是一款Maven版的Java源代码生成器,是快速构建项目的利器.代码生成器模块属于可拆卸模块,即按需引入.代码生成器生成SSM(Spring.SpringBoot.Myb ...

  5. 06_一对一和一对多

    一. 一对一关系 1. 一对一的实体类 2. 一对一映射配置 二. 一对多关系 1. 一对多的实体类 2. 一对多映射配置 二. 一对一和一对多关系例子 1. 新建一个名为AssociationCol ...

  6. mybatis入门(六)----高级映射(一对一,一对多,多对多)

    阅读目录 一:订单商品数据模型 二.一对一查询 三.一对多查询 四.多对多查询 回到顶部 一:订单商品数据模型 1.数据库执行脚本 创建数据库表代码: View Code 测试数据代码: View C ...

  7. mybatis一对多关联查询_一对一,一对多,多对多查询及延迟加载(N+1问题)分析

    推荐学习 重识SSM,"超高频面试点+源码解析+实战PDF",一次性干掉全拿走 全网独家的"MySQL高级知识"集合,骨灰级收藏,手慢则无 "吃&qu ...

  8. django orm级联_Django数据表关联关系映射(一对一、一对多、多对多)

    我们知道涉及到数据表之间的对应关系就会想到一对一.一对多.多对多,在学习 MySQL 数据库时表关系设计是需要重点掌握的知识.Django 中定义了三种关系类型的字段用来描述数据库表的关联关系:一对多 ...

  9. mybatis 一对一与一对多collection和association的使用

    在mybatis如何进行一对一.一对多的多表查询呢?这里用一个简单的例子说明. 一.一对一 1.association association通常用来映射一对一的关系,例如,有个类user,对应的实体 ...

最新文章

  1. 一文详解C++文件读写(FileStorage、txt)
  2. 执行后可以查看python版本的是-【单选题】执行后可以查看Python的版本的是
  3. 数据中心业界迎来机器学习工具
  4. c++享元模式flyweight
  5. 如何获得C4C里某个code字段对应的描述信息
  6. Dapr牵手.NET学习笔记:Actor一个场景
  7. 【深圳】掌通宝科技有限公司技术总监(兼架构师),约吗
  8. 每天进步一点点《ML - 异常点检测》
  9. 魔改部署自己专属的合成大西瓜(一:运行篇)
  10. android播放视频功能,android surfaceView实现播放视频功能
  11. 配置8086汇编环境
  12. pt和字号的对应关系
  13. PHP 梯形图,初学者必掌握plc梯形图解释
  14. Python3 字符串小练习
  15. python 模拟键盘鼠标输入_Python模拟键盘输入和鼠标操作
  16. 0201电脑桌的制作过程(使用3DsMAX2016)
  17. 数据结构(递归及应用)
  18. honor荣耀为什么要研发高端?
  19. apmserv搭建是php环境,APMServ5.2.6一键搭建php等服务器环境视频教程
  20. CUMTCTF2020岁末赛wp

热门文章

  1. linux下统计所有py文件的代码多少行
  2. c语言,c++求最大公因数与最小公倍数方法集合
  3. nexus搭建和迁移
  4. spring依赖注入原理(转载)
  5. Fabricjs使用Group实现组合对象
  6. Winform中选取指定文件夹并获取其下所有文件
  7. Winform中使用控件的Dock属性设计窗体布局,使不随窗体缩放而改变
  8. Winform中使用NPOI实现导出Excel并文件另存为
  9. Linux-用户和组管理以及设置允许远程登录Root
  10. SpringBoot+JsTree实现在编辑时能选择树形结构并获取选中的ID