Oop 类是否可以有自己类型的成员?

Oop 类是否可以有自己类型的成员?,oop,Oop,为了模拟包含关系,其中对象包含相同类型的其他实例,我可以这样定义一个类吗 class RussianDoll { string name; RussianDoll doll; RussianDoll(); } 我应该如何为这个类构建构造函数?当然,为什么不呢?只要您不是无限期地实例化它 class RussianDoll { RussianDoll parentDoll; RussianDoll(RussianDoll parentDoll) {

为了模拟包含关系,其中对象包含相同类型的其他实例,我可以这样定义一个类吗

class RussianDoll {

    string name;
    RussianDoll doll;

    RussianDoll();
}

我应该如何为这个类构建构造函数?

当然,为什么不呢?只要您不是无限期地实例化它

class RussianDoll {
    RussianDoll parentDoll;

    RussianDoll(RussianDoll parentDoll) {
       this.parentDoll = parentDoll;
    }
}
是的。
一个常见的例子是链表

但是,您不能无条件地在构造函数中创建子对象,否则将创建无限多的对象

类是否可以有自己类型的成员?

当然。这其实很普遍。想想链表中的节点的情况,例如:

class Node {
    Node next;
    int value;
}

如何构建此类的构造函数?

您有几个选项(见下文)。显然,您应该避免在每次调用构造函数时创建新的类实例,因为这将导致无限递归

  • 您可以将一个
    节点
    作为参数,并像这样初始化它

    this.next = nextArg;
    
  • 您可以将其初始化为空引用

    this.next = null;
    
  • 您可以将其初始化为
    this

    this.next = this;
    

(通常在构造函数中创建一个完整的对象图是个坏主意,这样我就不用担心了:-)

答案取决于使用的语言。@Ignacio哪些语言不允许这样做?