java的聚合_java中聚合是什么
java中聚合是一种特殊的关联形式,它是两个类之间的关系,是一种HAS-A关系,是一种单向关联。如果类具有实体引用,则称为聚合。
举个例子:在一个有这么两个类Studentclass和Addressclass,它们分别代表学生和地址。Studentclass类中包含有许多信息,比如:studentId、studentName等等,还包含一个Addressclass类。其中Addressclass类中有拥有自己的信息,如国家,省会,城市等。如下所示:class Address
{
String country;
String province;
String city;
.....
}
class StudentClass
{
int studentId;
String studentName;
//创建与Addressclass类的HAS-A关系
Address studentAddr;
StudentClass(int id, String name, Address addr){
......
}
}
在这种情况下,Studentclass类具有实体引用Addressclass类;且
每个学生都有具体一个地址,所以学生和地址之间的关系是一个Has-A关系,即:Student Has-A Address
为什么要使用聚合?
因为可以维护代码的可重用性。
打个比方,在上例的两个类Student和Address的基础上,还有用了另外两个类College,Staff,它们代表学院和工作人员。
为了让学生、学院地址和工作人员都具有地址,现在,我们不需要一次又一次地使用相同的代码;我们只需要在定义每个类时引用Address类就行。
因此,我们可以通过使用聚合关系来提高代码的可重用性。
聚合示例class Address {
String country,province,city;
public Address(String country, String province, String city) {
this.country = country;
this.province = province;
this.city = city;
}
}
public class StudentClass{
int id;
String name;
Address address;
public StudentClass(int id, String name,Address address) {
this.id = id;
this.name = name;
this.address=address;
}
void display(){
System.out.println("="+id+",name="+name);
System.out.println("地址是: "+address.country+","+address.province+","+address.city+"\n");
}
public static void main(String[] args) {
Address address1=new Address("China","Hubei","Wuhan");
Address address2=new Address("China","Hunan","Changsha");
StudentClass Student1=new StudentClass(150,"小明",address1);
StudentClassStudent2=new StudentClass(151,"小华",address2);
Student1.display();
Student2.display();
}
}
效果图:
总结:以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。
java的聚合_java中聚合是什么相关推荐
- java 聚合_Java 8 聚合操作详解
Oracle在2014年3月19日如期发布了Java 8.Java 8版本被认为是具有里程碑意义的一个版本,Oracle在该版本中添加了许多新特性,包括Lambda表达式.方法引用.加强了安全等等. ...
- java mod %区别_Java中 % 与Math.floorMod() 区别详解
%为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...
- java show过时_Java中show() 方法被那个方法代替了? java编程 显示类中信
你说的show是swing里的吧,在老版本中Component这个超类确实有show这个方法,而且这个方法也相当有用,使一个窗口可见,并放到最前面.在jdk5.0中阻止了这个方法,普遍用setVisi ...
- java判断类型_Java中类型判断的几种方式 - 码农小胖哥 - 博客园
1. 前言 在Java这种强类型语言中类型转换.类型判断是经常遇到的.今天就细数一下Java中类型判断的方法方式. 2. instanceof instanceof是Java的一个运算符,用来判断一个 ...
- java 序列化实例_Java中的序列化与反序列化实例
创建的字节流与平台无关.因此,在一个平台上序列化的对象可以在另一个平台上反序列化. 为了使Java对象可序列化,我们实现java.io.Serializable可序列化接口. ObjectOutput ...
- java 数据类型分为_JAVA中分为基本数据类型及引用数据类型
byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值 ...
- java 代码锁_Java中的Lock锁
Lock锁介绍: 在java中可以使用 synchronized 来实现多线程下对象的同步访问,为了获得更加灵活使用场景.高效的性能,java还提供了Lock接口及其实现类ReentrantLock和 ...
- java wait 参数_java中wait()和join()方法的区别是什么
java中wait()和join()方法的区别是:存在不同的java包中:wait()方法用于线程间通信,它所施加的等待状态的线程可以被启动:join()方法用于在多个线程之间添加排序,它所施加的等待 ...
- java thread join()_Java中Thread.join()的使用方法
概要 本文分三个部分对thread.join()进行分析: 1. join() 的示例和作用 2. join() 源码分析 3. 对网上其他分析 join() 的文章提出疑问 1. join() 的示 ...
最新文章
- 海信电视root工具_海信璀璨系列家电:一次购买便能享受全方位智能家居生活...
- opencv videoio无法读取rstp_使用一行Python代码从图像读取文本
- 7.4.5 鲁棒主成分分析 PCA
- IBASE Read buffer invalidate when locked
- 06构造方法和文件读取
- 5.Django|模型层--多表关系
- 某8位微型计算机地址码为18位,计算机组成原理复习题.doc
- python与Labview进行数据通信(UDP)
- jad的用法(反编译某目录下所有class)
- mac android手机录屏软件,Mac录屏软件推荐,比Quicktime好用!
- cmake-3.17 cmake-3.18.2下载
- 免费企业邮箱: Google企业邮箱的申请
- 如何看待 12 月 26 日发布的华为云 WeLink 企业智能工作平台?能对标得过企业微信和钉钉吗?
- python编写MySQL数据库查询/操作软件代码
- Vortex: 一种基于RISC-V指令集自定义扩展的开源GPGPU架构
- 个人计算机和家用计算机的区别,量子计算机和普通计算机的区别
- Android地图集成以及基础功能
- JS数组定义,遍历,判断是否是数组
- 基于 FPGA Vivado 信号发生器设计(附源工程)
- Kof 2002 ps2 android,拳皇2002PS2版-公测版
热门文章
- Bootstrap学习文档(三)
- 通信原理简明教程 | 物联网通信技术简介
- 牛客练习赛43 回顾
- vue之vue的生命周期、swiper、自定义组件的封装、自定义指令、过滤器、单文件组件及vue-cli
- JS 滚动屏幕至顶端
- 引流虚拟主机和服务器,免费虚拟主机能抢到吗
- 有隔板高效过滤器和无隔板高效过滤器区别在哪里
- 计算机a类会议论文难度,中国计算机学会推荐国际学术会议和期刊(A类)2019年...
- 常见seo名词解释二(网站SEO常见术语说明)-从SEO到优化实战大师
- echarts 设置仪表盘数字的位置_【Python代替Excel】11:用Python做数据仪表盘