Ciao ragazzi, è da qualche giorno che mi sto barcamenando per capire come assegnare dei valori a delle variabili appartenenti a delle classi che sono dichiarate in un'altra classe. Esempio:


codice:
public class ProvaClasse{

class Punto{
      int x;
      int y;
}

class Rettangolo{
      int altezza; 
      int base;
      Punto posizione;
}

public static void main(String[]args){
      
      Posizione p= new Posizione();
      p.x= 3;
      p.y= 5;

      Rettangolo rett= new Rettangolo();
      rett.posizione.x= 5;
      System.out.println(rett.posizione.x);
      rett.posizione.y= 9;
      System.out.println(rett.posizione.y);
}
}
In questo modo non lo dà per giusto, perché dice "NullPointerException:attempt to write to field 'int java".
Mentre assegnando l'istanza "p" a rett.posizione stampa correttamente i valori p.x e p.y:

codice:
public static void main(String[]args){
      
      Posizione p= new Posizione();
      p.x= 3;
      p.y= 5;

      Rettangolo rett= new Rettangolo();
      rett.posizione= p;
      System.out.println(rett.posizione.x);
      System.out.println(rett.posizione.y);
}
Per assegnare i valori bisogna sempre creare un'istanza di tutte le classi usate o c'è un altro metodo per controllare le variabili "x" e "y" direttamente dalla classe "Rettangolo" che contiene la classe "Punto"?