Взгляните на строки в вашем main
методе ...
Эта строка создает новый Cat
с именем (которое было определено с помощью ввода ранее):
Cat catMother = new Cat(motherName);
в то время как следующая строка также создает новый Cat
, но использует другой конструктор (с двумя аргументами):
Cat catDaughter = new Cat(daughterName, catMother);
Если вы просто прочитаете имена аргументов, вы можете ясно увидеть взаимосвязь ... Использование этого конструктора дает новому Cat
имя (дочь) и родственника (мать). Этот родственник хранится как атрибут в классе Cat
. Таким образом, каждый экземпляр Cat
имеет другого Cat
в качестве родителя или null
(последний может привести к различным проблемам).
Затем взгляните на атрибуты класса Cat
, вот где значения (или нет):
private String name; // this is where the name of the cat object is stored
private Cat parent; // this is where mother or father is stored (yes, only one possible at a time)
В Java довольно распространено иметь экземпляр некоторого класса, имеющий другой экземпляр того же класса в качестве атрибута, который ничем не отличается от объекта класса String
, просто другого типа объекта.