Innanzitutto cosa è "Posizione"? (intendo quel new Posizione() nel main). È un'altra classe (che non si vede) o hai solo sbagliato a scrivere invece di Punto?
Comunque tieni presente una cosa importante: le classi Punto e Rettangolo tecnicamente sono delle "inner class" (poiché sono definite dentro ProvaClasse e non con static). Una inner class è molto particolare ed ha regole specifiche. Se non sai bene cosa sono e cosa comportano, il semplice consiglio è di evitarle.
Ora, ignorando un momento i buoni principi della programmazione ad oggetti (incapsulamento, mantenere privati i campi, ecc...), volendo accedere direttamente ai campi, quello che segue è tecnicamente corretto.
codice:public class Prova { public static void main(String[] args) { Rettangolo rett = new Rettangolo(); rett.altezza = 50; rett.base = 80; rett.posizione = new Punto(); // ora posso accedere a x/y poiché Punto è istanziato! rett.posizione.x = 10; rett.posizione.y = 30; System.out.println("x , y = " + rett.posizione.x + " , " + rett.posizione.y); System.out.println("base x altezza = " + rett.base + " x " + rett.altezza); } } // Punto e Rettangolo sono FUORI da Prova class Punto { public int x; public int y; } class Rettangolo { public int altezza; public int base; public Punto posizione; }


Rispondi quotando