类与类之间存在以下关系:
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代码中,表现为成员变量。
聚合和组合的区别在于:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。
4、 总结
在Java中,应该尽量优先使用组合,而不是继承,因为继承会使得类关系过于复杂化,破坏了封装性,使用组合一样可以获得已有类的功能,而且会使新类更加稳固。
实际上,从依赖 -----〉聚合--------〉组合,类与类之间的关系更加紧密,互相之间的影响越来越大,其实我们平常比较少去区分这些关系,而且事实上这东西的定义不太好理解,所以肯定会导致认识上的偏差,所以我们使用这些东西的时候,尽量靠近大家都认同的做法,这样容易让别人理解。
分享到:
相关推荐
能够很好的了解java中类与类之间的关系,如依赖,泛化,关联,聚合。以及它们之间的关系和区别。
在Java中,了解类与类之间的关系。帮助初学者去理解
java面相对相类与类之间的关系,理论详细
JAVA类之间的关系思维导图,便捷整理思路,泛化、实现、依赖、关联、组合、聚合……
1) 熟悉Java中类的设计; 2) 设计类的数据域与方法; 3) 设计类与类之间的关系 4)使用设计的类 实验内容 对平面几何中的各种基本图形使用面向对象的设计方法建模,需要设计的类包括:点、直线、三角形、矩形、...
java类的阐述,简单的讲述类与类之间的关系。
讲解java Dao类的里各种语句与变量之间的关系 ························································
类与类之间的关系对于理解面向对象具有很重要的作用,以前在面试的时候也经常被问到这个问题,在这里我就简单给大家介绍一下。
Java抽象类和接口和继承之间关系 Java抽象类和接口和继承之间关系
javax.sql.rowset.serial 提供实用工具类,允许 SQL 类型与 Java 编程语言数据类型之间的可序列化映射关系。 javax.sql.rowset.spi 第三方供应商在其同步提供者的实现中必须使用的标准类和接口。 javax.swing 提供...
包含IO中的类的关系图和示例代码,初学者可以参考
java 卡车和卡车司机之间的关系 java 卡车和卡车司机之间的关系
7.1 建立类和对象的模型 7.2 寻找系统中的类 7.3 确定类或对象之间关系 7.4 设计类的属性 7.5 设计类的职责 7.6 小结
2、用类来描述游戏角色的交手次数、经验值、生命值之间的关系,并断定角色决斗的胜负。 1)、两游戏角色决斗。角色1交手次数+1,生命值-1,经验值+2;角色2交手次数+1,生命值-2,经验值+3。经验值每增加50时,...
javax.sql.rowset.serial 提供实用工具类,允许 SQL 类型与 Java 编程语言数据类型之间的可序列化映射关系。 javax.sql.rowset.spi 第三方供应商在其同步提供者的实现中必须使用的标准类和接口。 javax.swing 提供一...
javax.sql.rowset.serial 提供实用工具类,允许 SQL 类型与 Java 编程语言数据类型之间的可序列化映射关系。 javax.sql.rowset.spi 第三方供应商在其同步提供者的实现中必须使用的标准类和接口。 javax.swing 提供...
Java 关于类和对象之间关系的介绍,可以大概有个了解。
* 关系自身与某一关系的运算 * 两个关系之间的运算 * 求一关系的自反闭包 * 求一个关系的对称闭包 * 求一个关系的传递闭包 AND//关系的交运算 OR//关系的并运算 NOT//关系的非运算 XOR//关系的异或运算 SUB//...
\\java类、抽象类、接口、继承和对象解析 .doc