È possibile avere oggetti privati? Ad esempio, quando istanziate un oggetto (classType object1 = new classType ()), può essere privato o protetto o è sempre pubblico?
È possibile avere oggetti privati? Ad esempio, quando istanziate un oggetto (classType object1 = new classType ()), può essere privato o protetto o è sempre pubblico?
La questione se un oggetto sia private
o protected
o public
semplicemente non ha senso: non puoi dare un nome a un oggetto, e quindi non puoi accedere ad un oggetto per nome, quindi restrizioni di accesso basate sui nomi semplicemente non si applicano agli oggetti.
L'unico modo per accedere a un oggetto è se quell'oggetto è referenziato da un campo o restituito da un metodo, entrambi i quali possono essere public
, protected
, pacchetto protetto, o private
.
Is it possible to have private objects?
Non nel senso stretto di private
. Questa parola ha senso solo quando si parla di membri / metodi di una classe e non ha altro luogo.
In un senso più ampio, è possibile (e abbastanza comune) creare oggetti all'interno di una classe in un modo che non lasciano mai la classe, e quindi sono invisibili al mondo esterno (cioè, memorizzarli solo in membri privati di la classe e assicurati di non usarli mai in un modo che li espone al chiamante dei tuoi metodi). Tuttavia, l'oggetto non è privato; solo il membro della tua classe che contiene un riferimento a quell'oggetto è in senso stretto private
.
Oggetti Java istanziati con un nuovo operatore (es. Esempio eObject = nuovo Esempio ()) non può essere specificato privato o pubblico. Sono limitati dall'ambito e dalla visibilità in base al contesto in cui sono definiti. Ad esempio, è possibile accedere a un oggetto creato all'interno di un metodo solo all'interno di tale metodo.
Ma gli oggetti composti all'interno di altri oggetti (es. variabili di istanza) possono essere specificati con specificatori di accesso privati, pubblici e protetti.
Leggi altre domande sui tag object-oriented java c++