Java中类与类之间的关系

 类与类之间存在以下关系:

  1、 泛化(Generalization)

  很简单,就是我们常说的继承。是说子类获得父类的功能的同时,还可以扩展自己的功能。

  如图:


  Java代码中表现为:extends 和 implements

  2、 依赖(Dependency)

  两个相对独立的咚咚(A和B),当A负责构造B时,A与B形成依赖关系,即A使用B。

  如图:


  Java代码中的表现为局部变量,方法的参数,以及对静态方法的调用

  3、 关联(Association)

  两个相对独立的咚咚(A和B),当A对象持有B对象的时候,形成关联关系。

  关于分为有两种特殊的形式,聚合(Aggregation)和组合(Composition),聚合和组合只有概念上的区别,在Java中的代码实现上没有区别。

  聚合:指的是整体与部分的关系,如图:


  组合:表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期,即整体对象不存在,部分对象也将不存在,如图:


  Java代码中,表现为成员变量。

  4、 总结

  在Java中,应该尽量优先使用组合,而不是继承,因为继承会使得类关系过于复杂化,破坏了封装性,使用组合一样可以获得已有类的功能,而且会使新类更加稳固。

  实际上,从依赖 -----〉聚合--------〉组合,类与类之间的关系更加紧密,互相之间的影响越来越大,其实我们平常比较少去区分这些关系,而且事实上这东西的定义不太好理解,所以肯定会导致认识上的偏差,所以我们使用这些东西的时候,尽量靠近大家都认同的做法,这样容易让别人理解。
【iceberg数据一致性】iceberg如何保证高并发数据一致性 那么在高并发的时候,同时操作某张表时是如何运作的呢?其实这里iceberg引用了乐观锁的方法。其实在写入数据的时候是有一个验证的操作的,即在准备写入时会检查原文件带写入文件的差异,如果存在本次写入数据以外的数据,则代表有其他操作已经更新了原文件,那么本次写入会取消,并重试写入的步骤,知道验证完成,写入完成,如此就保证了数据的一致性,并且也解决了HMS锁的问题。在使用iceberg写数据时,一直弄不清楚为什么iceberg写入快,并且能够保证数据的一致性。今天决定搞清楚这个问题,经过查询理解,写下来。 阅读详情

相关推荐

六轴机器人正解

采用的是John H.Craig在【机器人学导论】中的改进DH模型 1.六轴坐标系 2.DH参数 i αi−1\alpha_{i-1}αi−1​ ai−1a_{i-1}ai−1​ did_idi​ θi\theta_iθi​初值 1 0 0 0 0 2 -90 a1a_1a1​ 0 -90 3 0 a2a_2a2​ 0 -90 4 -90 a3a_3a3​ d4d...

m0_37581770的博客 2491

UML图中之间关系:依赖,泛化,关联,聚合,组合,实现

图 1) (Class)封装了数据行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。 2) 在系统中,每个具有一定的职责,职责指的是所担任的任务,即要完成什么样的功能,要承担什么样的义务。一个可以有多种职责,设计得好的一般只有一种职责,在定义的时候,将的职责分解成为的属性操作(即方法)。 3) 的属性即的数据职责,的...

weixin_30517001的博客 1848

【机器学习概率统计】11 贝叶斯统计推断:最大后验

这一节,我们来介绍另外一种统计推断方法:贝叶斯统计推断方法。 1.回顾贝叶斯定理 首先,我们先来复习一下贝叶斯定理: p(Θ∣X)=p(X∣Θ)p(Θ)p(X)p(\Theta|X)=\frac{p(X|\Theta)p(\Theta)}{p(X)}p(Θ∣X)=p(X)p(X∣Θ)p(Θ)​ 在这个简简单单的式子当中,蕴含了我们要掌握的很多重要内容: 贝叶斯定理当中的四个概率表达式,他们都非常重要,在这一节的内容中将反复出现,我们来一一解析一下: p(Θ)p(\Theta)p(Θ):先验分布。 反映的是在

机器学习数学基础系列专栏 3250

设计模式-2.2之间的6种关系

1.继承关系 2.实现关系 3.依赖关系 4.关联关系 5.聚合关系 6.组合关系 7.图建模步骤 1.继承 extends (泛化)在UML中用带空心三角形的实线表示。指向父。 2.实现implements 实现接口,可多个。虚线空心三角形。 3.依赖 对于AB,如果出现下面情况,称A依赖B(一个里面方法参数是另一个): 1.A中某个方法的形参是B型;2.A中某个方法的返回型是B型;3.A中某个方法中的局部变量是B型。 虚线箭头,箭头...

m0_50894322的博客 1497

之间的六种关系的表示方法

之间有以下六种关系: 依赖 关联 聚合 组合 实现 泛化 1、依赖关系 虚线+箭头表示 例如:人车 2、关联关系 实线+箭头表示 例如:老师课程 3、聚合关系 空心菱形+箭头表示 例如:大雁雁群 4、组合关系 实心菱形+箭头表示 例如:人手、腿、头 5、实现关系 虚线+空心箭头表示 例如:List接口AbstractList 6、继承关系 实线+实心箭头表示 例如:...

Medlen 7371

之间的常见关系

之间的常见关系

qq_52117632的博客 1032

之间关系

之间关系有: 1、关联关系; 2、组合关系; 3、聚合关系; 4、依赖关系; 5、继承关系; 6、实现关系; 其中,组合关系聚合关系都是特殊的关联关系。 关联关系: A ->B A关联B 是单向关联,如果B->A,则形成双向关联; 语义:A knows a B 或者是 (A has a B) 代码形式: class A{ B *m_B; }...

weixin_30311605的博客 164

Java 之间关系

Java 之家的关系 一、继承关系 继承指的是一个(称为子、子接口)继承另外的一个(称为父、父接口)的功能,并可以增加它自己的新功能的能力。 在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML图设计中,继承用一条带空心三角箭头的实线表示,从子指向父,或者子接口指向父接口。 二、实现关系 实现指的是一个class实现interface接口(...

FantasyWxw的博客 1万+

java之间关系

java之间关系

zhouguizhi 1811

Java之间关系

java 之间关系理解 之间关系大体上存在五种—继承(实现)、依赖、关联、聚合、组合。 接下来简单分析一下这些关系。 继承(实现) 这个比较好理解。对于来说,这种关系叫做继承,对于接口来说,这种关系叫做实现。继承是一种“is-a”关系。 依赖 依赖简单的理解,就是一个A中的某一个方法使用到了另一个B。 这种使用关系是具有偶然性的、临时性的、非常弱的,但是B的变化会影响到A。 比如说,我用笔写字,首先需要一个来代表我自己,然后需要一个来代表一支笔,最后,‘我’要调用‘笔’里的方法来写字

qq_40415149的博客 3357

JAVA之间关系

JAVA之间关系

qq_48953464的博客 3026

Java中的之间关系

Java中的之间关系

林隐的博客 1373

Java中的之间方法的调用关系

Java中的之间方法的调用关系是通过关联关系实现的。通过的关联关系,一个的方法可以调用另一个的方法。聚合关系组合关系是常见的之间的关联关系。在调用方法时,首先需要创建对象实例,并通过对象实例调用方法。这样的方法调用机制实现了Java中的之间的交互功能实现。

qq_31532979的贺公子之数据科学与艺术博客,致力于科技向善,拥抱开源,要用技术的影响力来领导团队,而不是威权和职位! 1228

java之间关系

java中,之间关系有 (1)并列关系: public class HelloWorld{ public static void main(String [] args ){ System.out.print("hello\tworld\n\n\n"); } } class hello{ public static void main(String [] args ){ ...

wyqwilliam的博客 240

Java之间关系

Java之间关系Java之间关系有如下几种: 依赖、关联、聚合、组合、继承、实现 其中的关联, 聚合, 组合需要在语义上作区分, 依赖(Dependence) uses-a, 依赖就是一个A使用到了另一个B, 在代码中的表现就是B作为参数在A中的某个方法中被使用,或者是A方法中的局部变量. 关联(Association) 关联可以是单向的,也可以是双向的.在代码中的表现为被关联的B以A的字段的形式出现在关联A中 聚合(Aggregation) 聚合是关联关系的一种特例, 体

sunday2018的博客 1119

Java之间关系

之间关系包括了 is a,has a, use a三种关系 is a包括了 继承,实现关系 has a包括了 组合,聚合,关联关系 use a包括了 依赖关系 继承:子是父的关系,狗是动物 [Java] 纯文本查看 复制代码 ? 1 2 public class Animal{} public c

msyqmsyq的博客 3079

java之间关系

java之间关系一、关联关系二、泛化关系:继承实现三、聚合关系四、组合关系五、依赖关系六、is-a,is-like-a,has-a是什么 一、关联关系 单向关联:从一个中可以访问另一个的成员,有这个的引用。 双向关联:两个可以互相访问,互相有引用。 自身关联:本中调用自身self or this. 多维关联:多个互相之间有单向关联也有双向关联,还可以有自身关联,多个维度的关联。 一对多关联:一个有多个的引用。 多对多关联:多个互相之间有单向关联也有双向关联。 当一个

Afterflow_s的博客 1471

Java筑基——之间的 6 种关系

目录1. 前言2. 正文2.1 组合(composition)2.2 聚合(aggregation)2.3 继承(extends) 1. 前言 2016 年 8 月我去面试 Android 的时候,遇到一个 Java 大牛,问过我这个问题。我确实不知道之间竟然会有 6 种关系。面试后,虽然查了一下,但是依然不理解:之间这 6 种关系是怎么总结出来的。 2. 正文 2.1 组合(comp...

willwaywang6 477
上一篇: Spring初步
下一篇: HibernateTemplate常用方法总结
ABCJIECBA
博客等级 码龄16年 22粉丝 76原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值