Java中类与类之间的关系

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

   实际上,从依赖 -----〉聚合--------〉组合,类与类之间的关系更加紧密,互相之间的影响越来越大,其实我们平常比较少去区分这些关系,而且事实上这东西的定 义不太好理解,所以肯定会导致认识上的偏差,所以我们使用这些东西的时候,尽量靠近大家都认同的做法,这样容易让别人理解。

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-07 13:30:59

Java中类与类之间的关系的相关文章

关于java,类的定义以及类之间的关系

问题描述 关于java,类的定义以及类之间的关系 一个公司需要开发一个能够计算雷达屏幕上两点之间距离的应用程序,将它用于空中交通控制应用的一部分 解决方案 在java中类和类之间的关系基本上有依赖.关联.聚合.组合等 一.继承关系 继承指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力.在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性.在UML类图设计中,继承用一条带空心三角箭头的实线表示,从子类指向父类,或者子

Cocoa框架类之间继承关系

原文出处:http://blog.csdn.net/duanyipeng/article/details/7110324 Cocoa框架类之间继承关系是本文要介绍的内容,主要是来了解cocoa的继承关系,Cocoa框架包含两个核心框架:Foundation和Application Kit (UIKit) 框架. 在Cocoa开发中是必要的,至于其它框架(如:Core Data.Sync Services.Address Book.Preference Panes.Screen Saver.Web

java中类与类关系的UML图与代码表现

类与类之间存在以下关系: 泛化(Generalization) 依赖(Dependency) 关联(Association)   聚合(Aggregation) 一.泛化(Generalization) 定义:表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系.一般化的关系是从子类指向父类的,与继承或实现的方法相反. 具体表现:父类 父类实例 = new 子类() UML图,Animal类与Tiger类,Dog类的泛化关系: 代码表现:  代码如下 复制代码 class A

简单谈谈Java类与类之间的关系_java

类与类之间最常见的关系主要有三种:依赖(uses-a).聚合(has-a)和继承(is-a). 下面以在线书店订单系统为例,来详细的讲述这三种关系的概念. 在线书店订单系统的主要功能是:注册用户可以登录到网上书店选购图书,在线填写订单,并支付购书款.书店确认已经收到购书款时,按用户留下的地址邮寄图书.可以在这个系统中建立几个类,有图书(book).账户(account).订单(order).地址(address)等,如下图所示: 依赖(uses-a) 依赖关系是类中最常见的关系,例如订单类(or

java web-java 画url之间的关系图

问题描述 java 画url之间的关系图 用java jdk1.8,以wwww.jxufe.cn的域名为例,分析该域名下(超出该域名的网页忽略)所有网页的静态链接关系,并运用图形的方式展现关系. 有可以提供的思路么?我想问问有什么开源框架来画各种url之间的关系图呢?谢谢大家 解决方案 无非就是抓取页面,正则表达式提取链接,然后递归抓取,放在一个图的数据结构中. 在一个2d平面上画出所有节点,并且把他们之间有关系的用直线连起来. 当然,要考虑图的美观,需要额外的算法. 解决方案二: 去学学数据挖

全面解释java中StringBuilder、StringBuffer、String类之间的关系_java

1. String 类 String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间. String a = "a"; //假设a指向地址0x0001 a = "b";//重新赋值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经不再是a所指向的,a 已经指向了其它地址. 因此String的操作都是改变赋值地址而不是改变值操作. 2. StringBuf

uml类之间的关系

问题描述 组合,聚合,继承,依赖,哪个联系最强?哪个最弱啊???

java-JAVA类和类之间的赋值问题

问题描述 JAVA类和类之间的赋值问题 建立下三个类(文件那种)public class Dto { public String hehe;public String getHehe() { return hehe;}public void setHehe(String hehe) { this.hehe = hehe;} }2.R.javapublic class R { public void hehe() { String test = ""test""; D

eclipse中怎样查看类之间的引用关系

问题描述 我想查看一个项目中的所有类之间的相互引用关系:在A类中查询它引用的所有其他的类可以看开头部分的import就可以知道但是A类要知道整个项目中有哪些类引用了它怎么看(看有些人说是F4,这好像看不到 显示的内容只是A类调用了的哪些方法而已 和outline视图差不多)我想知道eclipse有木有哪个插件可以查看一个类引用哪些类并且哪些类引用它呢? 解决方案 在类名上点击右键,选Reference->Workingspace或者直接快捷键Ctrl+Shift+G解决方案二:Ctrl+T解决方