java aggregation

作者:原创时间:2022-03-23
文档

java aggregation是什么,让我们一起了解一下?

aggregation是association里的一个特殊的分类,aggregation里的关系只能是单向的,而association单向和双向均可。java中的aggregation就是建立了一个类,然后在其他地方引用来使用。

举个例子,比如有两个类是Student和Address,在特定情境下,每一个student的对象一定包含了一个Address的对象,而每一个address可以只含有街道名称或是门牌号,不一定是个学生的地址,所以不一定需要student的一个对象作为属性,因此这里就是aggregation。

实战操作:

  1. package com.ray.ch05;
    public class Test {
    public static void main(String[] args) {
    }
    }
  2. package com.ray.ch05;
    public class Test2{
    public static void main(String[] args) {
    new Test();
    }
    }

建立了Test这个类,我们可以在程序的任何地方new出来,就好像在Test2里面new一样,这样其实就是最简单的聚合复用。

但是,我们在复用的时候需要注意一点,就是对象的初始化问题。

我们修改一下上面的代码:

package com.ray.ch05;
 
public class Test {
public void say() {//增加了一个公共方法
System.out.println("method say");
}
 
public static void main(String[] args) {
}
}
package com.ray.ch05;
 
public class Test2 {
private Test test;//引用Test
 
private void runSay() {
test.say();
}
 
public static void main(String[] args) {
new Test2().runSay();
}
}

运行输出:

Exception in thread "main" java.lang.NullPointerException
 at com.ray.ch05.Test2.runSay(Test2.java:7)
 at com.ray.ch05.Test2.main(Test2.java:11)

空指针错误,因为我们在Test2里面没有实例化对象test,而默认的编译器只是初始化为null,因此会有运行时错误。

因此,我们必须注意对象的初始化,因为它们不像基础类型那样,编译器默认赋值。这个是编译器的优化策略。

所以,我们Test2上面的代码必须把Test这个类的对象实例化出来。

package com.ray.ch05;
 
public class Test2 {
private Test test=new Test();
 
private void runSay() {
test.say();
}
 
public static void main(String[] args) {
new Test2().runSay();
}
}

重新运行输出:

method say

以上就是小编今天的分享了,希望可以帮助到大家。

显示全文
java akka ipad2是哪年的 java algorithm iphone呼叫失败是什么原因 java android java annotation java ant java apns 苹果13蓝牙搜索不到设备怎么办 java append java application java apriori java archive java arcsin java arccos java arctan java args java arrays.sort java ascii java asmx java aes加密 java advice java addall java add java actuator 西北五省是哪五省 java activity java activiti 瓮安县属于哪个市 java active 茉莉花茶是绿茶吗 java a++和++a的区别 熊猫只有中国才有的吗 idea新建一个java项目 java 32bit java -xms idea新建java项目 祁连山在哪个省境内 行程码带*号什么意思 南极洲有哪些国家