Domanda

Voglio qualcosa di simile a protetto , dove solo una classe che implementa il campo protetto e qualsiasi cosa che lo abbia sottoclasse può accedervi.

Quindi, voglio essere in grado di dichiarare una variabile nella classe base come private , ma essere comunque in grado di accedervi da una sottoclasse.

Forse questo è contro la natura stessa della sottoclasse, private e / o protetti .

Esiste qualcosa di simile in Java?

È stato utile?

Soluzione

Esistono solo quattro livelli di accesso per i campi in Java:

  • privati ??
  • pacchetto-privato (impostazione predefinita; nessun modificatore di accesso)
  • protetto
  • pubblico

protetto consentirà alle sottoclassi, ad altre classi nello stesso pacchetto e ai membri della stessa classe di accedere al membro protetto .

La risposta breve è che non c'è modo di ottenere esattamente ciò che si desidera.

Per una descrizione di questi quattro modificatori di accesso, Controllo dell'accesso a I membri di una classe da I tutorial Java ha più specifici informazioni.

Altri suggerimenti

Se controlli la base di codice, puoi sempre controllare ciò che va nel pacchetto con la baseclass - se è solo nel suo pacchetto, solo le sottoclassi possono accedere al membro che vuoi mantenere privato eccetto le sottoclassi.

No, non esiste modificatore di accesso per fai esattamente questo. Il modificatore protetto è la cosa più vicina, ma che espone il campo a qualsiasi classe nello stesso pacchetto e alle sottoclassi (dentro o fuori dallo stesso pacchetto).

Non possibile. Puoi comunque dichiarare private le tue variabili e quindi dichiarare metodi pubblici che modificano le variabili la superclasse. Quindi si chiama il metodo pubblico sulla variabile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top