为了模拟包含相同类型的其他实例的对象关系,我可以定义一个类吗?一个班级可以拥有自己类型的成员吗?
class RussianDoll {
string name;
RussianDoll doll;
RussianDoll();
}
我该如何构建这个类的构造函数?
为了模拟包含相同类型的其他实例的对象关系,我可以定义一个类吗?一个班级可以拥有自己类型的成员吗?
class RussianDoll {
string name;
RussianDoll doll;
RussianDoll();
}
我该如何构建这个类的构造函数?
一个类可以有自己类型的成员吗?
当然可以。这其实很常见。在例如链表想想一个节点的情况下:
class Node {
Node next;
int value;
}
我应该如何建立这个类的构造函数(S)?
你有几个选择(见下文)。您显然应该避免在构造函数的每次调用中创建类的新实例,因为这会导致无限递归。
你可以采取一个Node
作为参数并初始化它像
this.next = nextArg;
你可以将其初始化为空引用
this.next = null;
你可以将它初始化为this
this.next = this;
(它通常是一个坏主意,以创建一个构造函数里面整个对象图中的任何方式,所以我不会担心这个反正:-)
当然,为什么不呢?只要你没有无限制地实例化它。
class RussianDoll {
RussianDoll parentDoll;
RussianDoll(RussianDoll parentDoll) {
this.parentDoll = parentDoll;
}
}
是的。
这是一个常见的例子是一个链表。
但是,您不能无条件地在构造函数中创建子项,否则您将创建无限数量的对象。
答案取决于所使用的语言。 –
@Ignacio哪些语言不允许这样做? – Dunes
谢谢大家。 –