PDA

View Full Version : [JAVA] public protected private


Sirbako
05-07-2005, 15:38
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

Sirbako
05-07-2005, 16:34
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...

DarkMic
05-07-2005, 18:39
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à".

;)

DarkMic
05-07-2005, 20:26
quoto in pieno quello che ha detto AlvaroVitale. Effettivamente volevo dire questo.