Ereditarietà
Come abbiamo visto nell'Introduzione agli oggetti, l'ereditarietà è uno dei concetti più importanti nel paradigma ad oggetti. In PHP è consentita l'ereditarietà singola che permette ad una classe figlia (o sottoclasse) di ereditare tutti i metodi e attributi di una classe padre (o superclasse). In pratica una classe figlia può essere vista come una "specializzazione" della classe padre.
Per esempio
Si nota che nella sottoclasse Studente si accede al metodo setNome che non è stato dichiarato nella sottoclasse, ma è stato ereditato dalla superclasse Persona.
La parola chiave extends denota che classe deve estendere una certa classe figlia (che quindi andrà a ereditare i metodi e gli attributi della classe padre); attenzione però che gli attributi e i metodi private della classe padre non potranno essere visibili alla classe figlia, ma se si vuole accedervi bisognerà farlo attraverso altri metodi definiti public o protected (nell'esempio $nome non è visibile alla classe figlia, ma vi si può accedere utilizzando i metodi getNome e setNome). Quindi se il costruttore di Studente fosse fatto così
verrebbe sollevato un errore in quanto stiamo tentando di accedere ad un attributo non visibile (per maggiori info -> http://www.sciax2.it/forum/guide-tutorial/dichiarare-classe-686609.html )
N.B.: ereditarietà singola significa che ciascuna classe può ereditare da una sola classe; esistono altre tecniche che permettono di superare questo limite.
Come abbiamo visto nell'Introduzione agli oggetti, l'ereditarietà è uno dei concetti più importanti nel paradigma ad oggetti. In PHP è consentita l'ereditarietà singola che permette ad una classe figlia (o sottoclasse) di ereditare tutti i metodi e attributi di una classe padre (o superclasse). In pratica una classe figlia può essere vista come una "specializzazione" della classe padre.
Per esempio
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
La parola chiave extends denota che classe deve estendere una certa classe figlia (che quindi andrà a ereditare i metodi e gli attributi della classe padre); attenzione però che gli attributi e i metodi private della classe padre non potranno essere visibili alla classe figlia, ma se si vuole accedervi bisognerà farlo attraverso altri metodi definiti public o protected (nell'esempio $nome non è visibile alla classe figlia, ma vi si può accedere utilizzando i metodi getNome e setNome). Quindi se il costruttore di Studente fosse fatto così
PHP:
Perfavore,
Entra
oppure
Registrati
per vedere i codici!
N.B.: ereditarietà singola significa che ciascuna classe può ereditare da una sola classe; esistono altre tecniche che permettono di superare questo limite.