Salve a tutti!
Una informazione... oggi mi è capitata una cosa stranissima e volevo chiedere a voi. Ad un colloquio tra le varie domande c'era una domanda sulla visibilità delle variabili in Java in classe che estende una superclasse; la cosa particolare è che la domanda diceva ... la classe figlia può accedere a tutte le variabili della superclasse che siano di tipo public, protected o package; allora si è entrati a discutere della visibilità delle variabili. Allora dovunque io abbia letto i fondamenti di Java ho letto ( correggetemi se sbaglio ) che la visibilità di una variabile o un metodo si ferma nel package se esso ( var o metodo ) è di tipo protected Il mio esaminatore, invece, sosteneva e sostiene che la visibilità della var o del metodo nel package è indicata dall'attributo package e cioè si dovrebbe fare una cosa del tipo:
package String pippo =......
In questo modo la variabile pippo è visibile solo nel package in cui c'è la classe contenete pippo; invece protected serve per le classi figlie e cioè:
protected String topolino = .....
serve a fare in modo che le classi figlie della suerclasse contente topolino possano accedere a topolino. Ma secondo me è errato! O sbaglio?
Da quanto ne so ( è probabile pure che ne sappia poco ) è proprio protected che fa in modo tale da rendere la variabile o il metodo "confinati" nel package... oppure no? Tra l'altro ho provato a creare una classe così:
public class VariabilePackage {
package int pippo = 0;
public VariabilePackage() {
}
}
ed ovviamente ho un errore. Qualcuno può delucidarmi? Esiste un altro "operatore di visibilità"( chiamiamoli così perchè il termine esatto mi sfugge ) oltre a:
default( caso in cui davanti al metodo o alla variabile non c'è nulla ), public, protected e private ?
Grazie a tutti e scusate la lunghezza del messaggio, ma questa cosa mi ha colpito davvero molto... e spaeriamo mi prendano a lavorare lì!
Ciao