Класс не является экземпляром объекта - класс описывает, как будет вести себя объект и какие данные он будет хранить. Если у вас есть класс, который объявлен так:
class MyClass
{
MyClass nextNode;
}
Это означает, что экземпляр этого класса будет содержать ссылку на объект того же класса внутри него. Чтобы создать экземпляр класса, вы вызываете конструктор с ключевым словом new
, например:
MyClass instance = new MyClass()
Теперь у вас есть экземпляр класса в вашей памяти, и instance
это ссылка на него. Вы должны понимать, что nextNode
внутри instance
НЕ является объектом - это ссылка на объект. Таким образом, можно написать следующие строки:
instance.nextNode = instance; //this will assign the same reference to nextNode as instance
instance.nextNode = new MyClass(); //this will assign a reference to a different object with the same type MyClass
Изображение ниже приблизительно описывает, где хранятся ссылки и объекты
![enter image description here](https://i.stack.imgur.com/pjh5z.png)
Концепция связанного списка сильно зависит от этой логики c, потому что вы не храните объекты внутри объектов - вы храните ссылки
![enter image description here](https://i.stack.imgur.com/wwtmb.png)
Также вам лучше создавать более простые для понимания вопросы с меньшим количеством кода, чем с большим, который трудно понять