我想知道如何在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中是如何工作的?(我知道什么是组合和聚合) };
发布于 2012-03-26 01:39:13
Java本身根本没有区分组合和聚合。在Java类型系统- if中,您不能表达引用的所有权概念,您需要显式地表达所有权,您必须用一些其他方法来表示这一点(通常只是通过构造一个新对象来存储在类的实例中)。
因为Java有一个GC,所以根本不需要声明内存的所有权;内存完全由GC拥有和管理。当然,对于其他资源不是这样的,在这里您可能仍然想要表示所有权。
发布于 2012-03-26 01:25:48
在Java中,对象只由指针引用。这意味着A
类型的字段实际上是对A
对象的引用。这也意味着该字段将始终作为空指针开始,您必须显式地将其赋给new A()
或其他任何值。
编辑:
class B {
A a;
B(A a) {
this.a = a;
}
B() {
this(new A());
}
}
发布于 2012-03-26 09:38:34
我认为这是用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;
}
//...
}
Source
https://stackoverflow.com/questions/9862286
复制相似问题