View Full Version : [JAVA] public protected private
la definizione è questa
public visibile da tutti
(non def.) visibile da tutti nello stesso package
protected visibile dalle sottoclassi
private nascosta da tutti
giusto?
ma se io definisco
classe A con una variabile int x
classe B stesso pack di A
come richiamo x??
slowguitar
05-07-2005, 16:17
ciao,
prova: A.x
ciao,
prova: A.x
no nn va solo se istanzio una classe posso accederci.. almeno credo sia così
Alvaro Vitali
05-07-2005, 16:52
se la variabile intera è "static" puoi accedervi senza dover instanziare un oggetto della classe che la contiene...altrimenti certamente dovrà esistere un oggetto A prima di poter accedere ad un suo attributo...
Il bello della programmazione ad oggetti è proprio questo. Quando tu scrivi una classe all'interno avrai le tue variabili e i tuoi metodi per accedere alle variabili. Nell'esempio precedente se nella Classe A dichiari private int x, per accedergli ti coviene fare un metodo che ti restiuisce questo valore ad esempio: GetX(). Se vuoi programmare in JAVA ti conviene utilizzare sempre i metodi GET e SET rispettivamente per prendere e settare i valori di una variabile.
Secondo me fare A.x non è bello, ma A.GetX() ha più stile.
Questo è uno stile di programmazione, ognuno è libero. Ho espresso solamente il mio stile.
Alvaro Vitali
05-07-2005, 20:01
Io direi che non è una questione di "stile" ma piuttosto una questione di incapsulamento, grazie ai metodi set e get puoi un giorno organizzare diversamente le strutture dati della tua classe e, senza dover mettere mano ad altre parti del programma rimpiazzare solo la classe in questione, saranno i metodi get e set che saranno cambiati ma chi utilizza la classe li chiamerà allo stesso modo di prima.
Accedere ad un metodo direttamente è più performante che non chiamare una funzione preposta (get o set), ma lo si fa nel nome della "riusabilità".
;)
quoto in pieno quello che ha detto AlvaroVitale. Effettivamente volevo dire questo.
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.