Per realizzare al meglio l'incapsulamento, nei linguaggi orientati agli oggetti, sono stati introdotti i cosiddetti "qualificatori", che determinano la visibilità delle variabili che definiamo all'interno delle nostre classi. I livelli di visibilità in Objective C sono 3:
Qualificatore | Visibilità |
---|---|
public | La variabile è visibile da qualunque oggetto |
private | Possiamo utilizzare la variabile solo all'interno dei metodi della stessa classe |
protected | Possono accedere alla variabile solo i metodi della stessa classe e quelli delle classi da essa derivate |
Le variabili di istanza per default sono protected, quindi accessibili dalle sottoclassi. Esaminiamo la sintassi necessaria a dichiarare la visibilità nel file di interfaccia:
@interface Classe:NSObject
{
int variabileProtetta; // protected per default
@private
int variabilePrivata;
@public
int variabilePubblica;
@protected
int variabileProtetta;
}
@end
Per indicare la visibilità è sufficiente decorare la dichiarazione della variabile con la relativa keyword, preceduta da un carattere chiocciola (@
).
Visibilità dei metodi
Il discorso cambia per quanto riguarda i metodi. In Objective C non possiamo applicare modificatori di visibilità ai metodi: tutti i metodi di istanza sono pubblici, almeno finché vengono dichiarati sul file di interfaccia.
Per simulare un metodo privato è possibile dichiararlo solamente nel file di implementazione e non in quello di interfaccia, in questo modo non è possibile invocare dall'esterno il metodo, in quanto esso non è esposto in nessun modo, almeno in modo formale. Tuttavia, se invocato dall'esterno, il metodo "nascosto" viene comunque eseguito.