Si sta creando ciò che è essenzialmente un clone dell'oggetto padre. Questo è diverso da solo salvare il puntatore all'oggetto genitore.
Ovviamente, prenderete più spazio di memoria duplicando l'oggetto padre. Ancora più importante, non si sta duplicando i riferimenti del genitore. Quindi, se si tenta di attraversare l'albero, andare al genitore di un nodo, quindi provare a visitare i suoi altri bambini, si disegna una serie di puntatori nulli.
La this.parentè un riferimento dell'oggetto corrente parentpuntatore.
Essa in realtà non vuol dire che thisè un genitore. Infatti, this.parentviene utilizzata per distinguere il locale parentpuntatore dal parametro in ingresso parent.
class Person{
Person parent; // <---- this is the "this.parent" attribute, and is initially undefined
public void setParent(Person parent){ // <---- the "Person parent" on this line is an incoming parameter
this.parent = parent; //<---- "this.parent" refers to the attribute, and "parent" refers to the parameter
}
}