Salve,
se io voglio creare una classe A, poi voglio estenderla con una classe subA, gli attributi di A devono per forza essere protected (o package o public) perché possano essere "visti" anche dalla classe subA?
Grazie.
Salve,
se io voglio creare una classe A, poi voglio estenderla con una classe subA, gli attributi di A devono per forza essere protected (o package o public) perché possano essere "visti" anche dalla classe subA?
Grazie.
sì
No ai layout tabellari!
Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872
Ma io cosi nel main posso accedere agli attributi facendo:
oggetto.attributo
e io non voglio che questo sia possibile.
come si fa?
Non ho ben capito... solo se sono pubblici ci si accede con quella notazione, altrimenti no.Originariamente inviato da bandofa
Ma io cosi nel main posso accedere agli attributi facendo:
oggetto.attributo
e io non voglio che questo sia possibile.
come si fa?
Se non vuoi che la sottoclasse abbia quel tipo di accesso, si mettono privati.
Ma mi sa che hai un bel po' di confusione in testa...
Per fugare i dubbi: http://download.oracle.com/javase/tu...sscontrol.html
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Forse mi sono espresso male.
Io ho una classe A con attributo1 protected.
La classe subA estende A.
Nel main, se creo una istanza di A e faccio:
istanzaDiA.attributo1 = 10 (esempio casuale)
me lo da per giusto.
Ma io non voglio che questo sia possibile (voglio che sia modificabile solo tramite metodo di A), quindi metto attributo1 private.
Mettendolo private, la classe subA non lo vede. Quindi chiedevo se c'era un modo per far si che attributo1 sia visibile da una qualsiasi sottoclasse di A, ma che non sia modificabile così liberamente come nell'esempio.
Dove si trova la classe main? Se si trova nella classe A è ovvio che te lo fa fare, ma prova ad accedere allo stesso modo da un'altra classe e vedrai che ciò non è possibile.
"Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)
Il main si trova dentro una classe a parte (con lo stesso nome del progetto), che contiene solo il main, dove all'interno del main creo un istanza di A, tramite la quale, facendo istanzaDiA.attributo = nuovoValore ne modifico l'attributo.
allora se vuoi un accesso "controllato" agli attributi puoi fare una cosa:
1. rendere private gli attributi
2. creare i metodi getter e setter per ogni attributo
in questo caso nelle sottoclassi l'accesso agli attributi avviene per forza di cose in modo controllato attraverso getter e setter.
Questo è il principio base dell'encapsulation
Questo perchè la classe contenente il main si trova nello stesso package della classe A. Da un'altro package gli attributi non sono accessibili direttamente.Originariamente inviato da bandofa
Il main si trova dentro una classe a parte (con lo stesso nome del progetto), che contiene solo il main, dove all'interno del main creo un istanza di A, tramite la quale, facendo istanzaDiA.attributo = nuovoValore ne modifico l'attributo.
P.S.
Il modo corretto di procedere è come ti ha indicato Valia. Attributi privati e metodi getter e setter pubblici o protetti.
"Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)