首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在java中编写组合和聚合

如何在java中编写组合和聚合
EN

Stack Overflow用户
提问于 2012-03-26 01:21:51
回答 3查看 3.4K关注 0票数 5

我想知道如何在java中识别组合和聚合代码。我有C++代码,但我不懂如何用java编写。

作文

代码语言:javascript
运行
复制
class A {};
class B { A composited_A; };

通过指针聚合

代码语言:javascript
运行
复制
class A {};
class B
{
A* pointer_to_A;
B(A anA){ 
pointer_to_A = &anA;
}

有没有人能告诉我这两个程序在JAVA中是如何工作的?(我知道什么是组合和聚合) };

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-26 01:39:13

Java本身根本没有区分组合和聚合。在Java类型系统- if中,您不能表达引用的所有权概念,您需要显式地表达所有权,您必须用一些其他方法来表示这一点(通常只是通过构造一个新对象来存储在类的实例中)。

因为Java有一个GC,所以根本不需要声明内存的所有权;内存完全由GC拥有和管理。当然,对于其他资源不是这样的,在这里您可能仍然想要表示所有权。

票数 8
EN

Stack Overflow用户

发布于 2012-03-26 01:25:48

在Java中,对象只由指针引用。这意味着A类型的字段实际上是对A对象的引用。这也意味着该字段将始终作为空指针开始,您必须显式地将其赋给new A()或其他任何值。

编辑:

代码语言:javascript
运行
复制
class B {
   A a;

   B(A a) {
      this.a = a;
   }

   B() {
      this(new A());
   }
}
票数 1
EN

Stack Overflow用户

发布于 2012-03-26 09:38:34

我认为这是用Java代码表达组合和聚合的最佳方式。

合成

代码语言:javascript
运行
复制
public class Person  
{  
    private final Name name;  

    public Person (String fName, String lName)  
    {  
        name = new Name(fName, lName);  
    }  

    //...  
}  

聚合

代码语言:javascript
运行
复制
public class Person  
{  
    private Costume currentClothes;  

    public void setClothes(Costume clothes)  
    {  
        currentClothes = clothes;  
    }  

    //...  
}  

Source

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9862286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档