如何用java编写Composition and Aggregation



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

成分

class A {};
class B { A composited_A; };

通过指针进行聚合

class A {};
class B
{
A* pointer_to_A;
B(A anA){ 
pointer_to_A = &anA;
}

有人能告诉我两者在JAVA中是如何工作的吗。(我知道组合和聚合是什么意思)};

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

由于Java有一个GC,所以根本不需要表达内存的所有权;内存由GC单独拥有和管理。当然,其他资源的情况并非如此,在这里您可能仍然希望表达所有权。

在Java中,对象仅由指针引用。这意味着A类型的字段实际上是对A对象的引用。这也意味着该字段将始终以空指针开始,并且必须显式地将其分配给new A()或其他类型。

编辑:

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

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

成分

public class Person  
{  
    private final Name name;  
    public Person (String fName, String lName)  
    {  
        name = new Name(fName, lName);  
    }  
    //...  
}  

聚合

public class Person  
{  
    private Costume currentClothes;  
    public void setClothes(Costume clothes)  
    {  
        currentClothes = clothes;  
    }  
    //...  
}  

最新更新