java类和类之间的关系

有目标就不怕路远。年轻人.无论你现在身在何方.重要的是你将要向何处去。只有明确的目标才能助你成功。没有目标的航船.任何方向的风对他来说都是逆风。因此,再遥远的旅程,只要有目标.就不怕路远。没有目标,哪来的劲头?一车尔尼雷夫斯基

导读:本篇文章讲解 java类和类之间的关系,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

java类和类之间的关系

概览

5种关系

  1. 依赖(dependency)
  2. 关联(association)
  3. 聚合(aggregation)
  4. 组合(composition)
  5. 继承(inheritance)可以更加细得分为实现(realization)和泛化(generalization)

从上至下依赖关系逐渐增强

详细说明区别

其实依赖关联聚合组合 都是差不多的,在日常的表达中也很容易混为一谈,特别是聚合和组合更加容易混为一谈(我感觉也没必要区分这么细,都是 “我中有你”)。

详细的含义如下

  1. 依赖:单向,类A依赖类B,是A在局部变量、方法入参、静态调用中出现了B(我觉得方法出参中出现B应该也算依赖),类似 use a
  2. 关联:可以单向双向(避免双向,它是一种循环依赖),类之间是一种比较平等的关系。类似 has a
  3. 聚合:是特殊的关联,跟关联的区别仅仅是语义上,比如关联的两个类的关系比较平等,但是聚合是不平等的,聚合是整体和个体的区别。对象的生命周期是 “整体死了,但是个体还在”(详细看代码以加深印象)
  4. 组合:是特殊的聚合,也仅仅是语义的差别。聚合是 “整体死了,个体还在”,组合是 “整体死了,个体也死了”,个体是整体的组成部分(详细看代码以加深印象)
  5. 继承:就是类继承类,类继承抽象类,类实现接口,接口继承接口这些关系。跟上面4个很好区分。其中也可以再细分为实现泛化,实现就是类实现接口,泛化就是类继承类、类继承抽象类、接口继承接口。泛化是一种 is a

用代码说明区别

  • 依赖
// use a
// 方法入参的依赖
public class Person {
  public void drink(Water w) {
  }
}
// 局部变量的依赖
public class Person {
  public void goOut() {
  	Car car = new Car();
  }
}
// 静态调用的依赖
public class Person {
  public void born() {
  	String idCardNo = IdCardUtil.getIdCardNo();
  }
}
// 方法出参的依赖
public class Person {
  public Profile getProfile() {
	
	}
}
  • 关联(是一种平等的关系),表示has a(有一个),比如这里的 “人有一个手机”
// has a
public class Person {
	private Phone phone;
	public void setPhone(Phone phone) {
		this.phone = phone;
	}
	public Phone getPhone() {
		return this.phone;
	}
}
  • 聚合:整体死了个体还没死
// Team被JVM回收时,persons不被回收,个体还存在
public class Team {
	private List<Person> persons;
	public Team(List<Person> persons) {
		this.persons = persons;
	}
}
  • 组合:整体死了,个体也死,个体是整体的组成部分
// Person被JVM回收后,各部分也被回收
public class Person {
	private Head head;
	private Body body;
	private List<Arm> arms;
	private List<Leg> legs;
	
	public Person() {
		this.head = new Head();
		this.body = new Body();
		this.arms = Lists.newArrayList<Arm>(new Arm("左臂"), new Arm("右臂"));
		this.legs = Lists.newArrayList<Leg>(new Leg("左腿"), new Leg("右腿"));
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/135283.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!