Может ли класс иметь член своего типа?
Конечно. Это на самом деле довольно часто. Подумайте о случае узла в связанном списке, например:
class Node {
Node next;
int value;
}
1012 *
*
Как мне построить конструктор (ы) для этого класса?
У вас есть несколько вариантов (см. Ниже). Очевидно, вам следует избегать создания новых экземпляров класса при каждом вызове конструктора, так как это приведет к бесконечной рекурсии.
Вы можете взять Node
в качестве аргумента и инициализировать его как
this.next = nextArg;
Вы можете инициализировать его нулевой ссылкой
this.next = null;
Вы можете инициализировать его как this
this.next = this;
(Как правило, создавать конструктивный граф объекта внутри конструктора - это плохая идея, так что в любом случае я бы об этом не беспокоился: -)