classe PHP estende - attributi / metodi con lo stesso nome ok?
Domanda
Se si dispone di una classe denominata "Utente" e un altro classe denominata "Admin" che si estende "utente", e si desidera Admin per ereditare tutti gli attributi, i metodi da utente, ad eccezione per il metodo __construct, per esempio.
class User {
private $name;
function __construct($name) {
$this->name = $name;
}
}
e
class Admin extends User {
private $authorization;
function __construct($name,$authorization) {
$this->name = $name;
$this->authorization = $authorization;
}
}
È corretto? Fa metodo di costruzione per l'utente di override Admin? Se la classe che estende ha lo stesso nome del metodo Suppongo che sia valido. Sto totalmente manca il punto di estensione classe?
Soluzione
Non è valido. Un aspetto di ereditarietà di classe è, che è possibile ignorare i metodi e fornire un'altra implementazione.
Ma nel tuo caso, vorrei fare
class Admin extends User {
private $authorization;
function __construct($name,$authorization) {
parent::__construct($name);
$this->authorization = $authorization;
}
}
come già implementato la "assegnazione del nome" nella classe padre. Si tratta di un approccio più pulito.
Altri suggerimenti
No, questo è perfettamente legale come modo si sostituisce il costruttore per l'utente. Generalmente parlato, i metodi con nomi simili a estendere classe "override" dei genitori di.
Occorre tuttavia tenere presente che i modificatori hanno un ruolo qui: "privato" ha dichiarato metodi in una superclasse non avranno ignorato in quanto non sono ereditate estendendo le classi. metodi dichiarati "finali" non possono essere sovrascritte estendendo le classi -. in nessun caso
Sì, è quello che si estende è per. È possibile ignorare tutti i metodi.
È anche possibile utilizzare stessa classe genitore chiamato metodo all'interno della classe del bambino.
Si veda: parent
parola