java 聚合_Java聚合
聚合
如果一个类有一个类的实体引用(类中的类),则它称为聚合。 聚合表示HAS-A关系。
考虑有一种情况,Employee对象包含许多信息,例如:id,name,emailId等。它包含另一个类对象:address,其包含它自己的信息,例如:城市,州,国家,邮政编码等,如下所示。
class Employee{
int id;
String name;
Address address;//Address is a class
...
}
在这种情况下,Employee有一个实体引用地址(Address),因此关系是:Employee HAS-A Address。
为什么要使用聚合?代码可重用性。
聚合的简单示例
在这个例子中,在Circle类中创建了Operation类的引用。
class Operation {
int square(int n) {
return n * n;
}
}
class Circle {
Operation op;// aggregation
double pi = 3.14;
double area(int radius) {
op = new Operation();
int rsquare = op.square(radius);// code reusability (i.e. delegates the
// method call).
return pi * rsquare;
}
public static void main(String args[]) {
Circle c = new Circle();
double result = c.area(5);
System.out.println(result);
}
}
执行上面代码,得到以下结果 -
78.5
何时使用聚合?当没有is-a关系时,通过聚合也能最好地实现代码重用。
只有在所涉及的对象的整个生命周期内维持关系为is-a时,才应使用继承; 否则,聚合是最好的选择。
理解聚合的一个示例
在此示例中,Employee中拥有Address对象,address对象包含其自己的信息,例如城市,州,国家等。在这种情况下,关系是员工(Employee)HAS-A地址(Address)。
Address.java
public class Address {
String city, province;
public Address(String city, String province) {
this.city = city;
this.province = province;
}
}
Emp.java
public class Emp {
int id;
String name;
Address address;
public Emp(int id, String name, Address address) {
this.id = id;
this.name = name;
this.address = address;
}
void display() {
System.out.println(id + " " + name);
System.out.println(address.city + " " + address.province);
}
public static void main(String[] args) {
Address address1 = new Address("广州", "广东");
Address address2 = new Address("海口", "海南");
Emp e = new Emp(111, "Wang", address1);
Emp e2 = new Emp(112, "Zhang", address2);
e.display();
e2.display();
}
}
执行上面代码,得到以下结果 -
111 Wang
广州 广东
112 Zhang
海口 海南
¥ 我要打赏
纠错/补充
收藏
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。
java 聚合_Java聚合相关推荐
- java类的聚合 组合定义_Java里组合和聚合的概念及其实现
Java里组合和聚合的概念及其实现 (一)概念 组合:组合是整体与部分的关系, 并且部分不可以离开整体而单独存在. 聚合:整体与部分的关系, 并且部分可以离开整体而单独存在. 在实际写代码时: 组合方 ...
- ElasticSearch java API - 聚合查询-聚合多字段聚合demo
以球员信息为例,player索引的player type包含5个字段,姓名,年龄,薪水,球队,场上位置. index的mapping为: "mappings": {"pl ...
- Elasticsearch 5.x Java api Aggregations(聚合)
Ealsticsearch 5.x Java API聚合string类型的时候,会报错(json的错),则需要在聚合的string类型字段的后面添加.keyword , 虽然使用watch查看聚合的e ...
- java 数据聚合_聚合java
09[在线日志分析]之基于Spark Streaming Direct方式的WordCount最详细案例(java版) 1.前提 a. flume 收集-->flume 聚合-->kafk ...
- Es elasticsearch 十七 Java api 实现聚合 几个聚合示例 sql 开启许可 新特效 java 实现es7 sql 功能
目录 Java api 实现聚合 依赖 简单聚合按照颜色分组获取每个卖出数量 聚合每个颜色卖出数量,及平均价格(每个分桶子聚合) 按照颜色分组 ,获取销售数量,avg min max sum 按照60 ...
- es 时间字段聚合_Elasticsearch 聚合(aggregation)查询返回所有
Elasticsearch做查询的时候,很多情况下,有一些查询满足不了我们的要求,这个时候,我们用Elasticsearch的聚合(aggregation)函数,下面讲讲aggregation的使用姿 ...
- 怎样用uml类图生成java类_JAVA:面向对象编程的底层逻辑,深度剖析
什么是面向对象 在目前的软件开发领域有两种主流的开发方法,分别是结构化开发方法和面向对象开发方法.早期的编程语言如C.Basic.Pascal等都是结构化编程语言,随着软件开发技术的逐渐发展,人们发现 ...
- Composite 聚合——Elasticsearch 聚合后分页新实现
1.聚合后分页应用场景 在常规检索的基础上,用户期望返回基于特定字段的聚合结果,且用户期望分页查看检索和聚合结果. 如下图所示:以2020东京奥运会热点新闻亚洲飞人"苏炳添"为例, ...
- Es Bucket聚合(桶聚合) 第一篇(常用桶聚合一览)
本篇将开始介绍Elasticsearch Bucket聚合(桶聚合). Buket Aggregations(桶聚合)不像metrics Aggregations(度量聚合)那样计算字段上的度量,而是 ...
最新文章
- Pycharm跳转回之前所在的代码行
- 电脑断网也难逃黑客攻破!风扇在转,手机放桌上,数据就被隔空窃取了
- 引入 ServletContextListener @Autowired null 解决办法
- 默认开机启动;通过Broadcastreceiver广播监听开机启动,实现没有activity的自启服务或者自启应用程序。...
- CodeForces - 1288C Two Arrays(组合数学)
- [如何做研究][如何写论文]
- python+ seleniumAPPium自动化 page Object 设计模式
- 1030 Travel Plan [Dijkstra]
- 基于javaweb+jsp的在线购书商城系统(java+jsp+mysql+servlert+ajax)
- matlab qam调制函数,matlab实现16QAM调制解调
- 关于数学公式的软件和markdown
- 比特大陆IPO之旅即将终结
- 粉笔科技创新OMO一体化模式 差异化突围职教市场
- 三大微分中值定理与两大积分中值定理
- Maya角色UV展平技巧笔记
- 键盘按键与键码的对照表的对照表
- Nature子刊:AI技术从零开始设计具有生物活性的蛋白质
- 有没有可以测试充电宝电流电压的软件,USB充电电流/电压检测仪USB电流和电压测试仪移动电源测试...
- 2020前端学习路线收集整理
- 梯度提升树(GBDT)算法超详细版本
热门文章
- java解码_Java数组已排序解码
- java转换为c#_C#vs Java哪一个更快? 将25k C#转换为Java(2)
- jax-ws和jax-rs_使用JAX-RS和Jetty创建Web服务和Rest Server
- drools。drools_使用Drools跟踪输出
- java ssh客户端_简单的Java SSH客户端
- hibernate脏数据_Hibernate脏检查的剖析
- unity ppr_智能自动PPR更改事件策略
- 谷歌guava_Google Guava MultiMaps
- 确定活动的热点垃圾收集器
- jit即时编译_热点中的即时编译器(JIT)