Cosa sono pubblici, privati e protetti nella programmazione orientata agli oggetti?
Cosa sono pubblici, privati e protetti nella programmazione orientata agli oggetti?
Risposte:
Sono modificatori di accesso e ci aiutano a implementare l' incapsulamento (o l'occultamento delle informazioni). Indicano al compilatore quali altre classi dovrebbero avere accesso al campo o al metodo da definire.
private
- Solo la classe corrente avrà accesso al campo o al metodo.
protected
- Solo la classe e le sottoclassi correnti (e talvolta anche le classi dello stesso pacchetto) di questa classe avranno accesso al campo o al metodo.
public
- Qualsiasi classe può fare riferimento al campo o chiamare il metodo.
Ciò presuppone che queste parole chiave vengano utilizzate come parte di una dichiarazione di campo o metodo all'interno di una definizione di classe.
Non sono realmente concetti, ma piuttosto parole chiave specifiche che tendono a verificarsi (con semantica leggermente diversa) in linguaggi popolari come C ++ e Java.
Essenzialmente, hanno lo scopo di consentire a una classe di limitare l'accesso ai membri (campi o funzioni). L'idea è che meno un tipo è autorizzato ad accedere a un altro tipo, minore è la dipendenza che può essere creata. Ciò consente di modificare più facilmente l'oggetto a cui si accede senza influire sugli oggetti che si riferiscono ad esso.
In generale, pubblico significa che l'accesso è consentito a tutti, privato significa che l'accesso è consentito solo ai membri della stessa classe e protetto significa che sono consentiti anche i membri delle sottoclassi. Tuttavia, ogni lingua aggiunge le proprie cose a questo. Ad esempio, C ++ ti consente di ereditare in modo non pubblico. In Java, c'è anche un livello di accesso predefinito (pacchetto) e ci sono regole sulle classi interne, ecc.
Tutti e tre sono modificatori di accesso e parole chiave che vengono utilizzate in una classe. Qualsiasi cosa dichiarata in pubblico può essere utilizzata da qualsiasi oggetto all'interno o all'esterno della classe, le variabili in privato possono essere utilizzate solo dagli oggetti all'interno della classe e non possono essere modificate tramite l'accesso diretto (poiché può cambiare tramite funzioni come la funzione amico) Tutto ciò che è definito nella sezione protetta può essere utilizzato dalla classe e dalla loro classe appena derivata.
Un elemento pubblico è accessibile da qualsiasi altra classe. Devi solo sapere di che oggetto si tratta e puoi utilizzare un operatore punto per accedervi. Protetto significa che una classe e le sue sottoclassi hanno accesso alla variabile, ma non a qualsiasi altra classe, devono usare un getter / setter per fare qualsiasi cosa con la variabile. Un privato significa che solo quella classe ha accesso diretto alla variabile, tutto il resto ha bisogno di un metodo / funzione per accedere o modificare quei dati. Spero che questo ti aiuti.
come sopra, ma qualitativamente:
private - least access, best encapsulation
protected - some access, moderate encapsulation
public - full access, no encapsulation
meno accesso fornisci, meno dettagli di implementazione fuoriescono dai tuoi oggetti. meno di questo tipo di perdita significa maggiore flessibilità (aka "accoppiamento più lento") in termini di modifica del modo in cui un oggetto viene implementato senza interrompere i client dell'oggetto. questa è una cosa veramente fondamentale da capire.
Per riassumere, nella programmazione orientata agli oggetti, tutto è modellato in classi e oggetti. Le classi contengono proprietà e metodi. Le parole chiave pubbliche, private e protette vengono utilizzate per specificare l'accesso a questi membri (proprietà e metodi) di una classe da altre classi o altre DLL o anche altre applicazioni.