Disons que j'ai quelque chose comme ceci:Laquelle de ces techniques d'héritage est une meilleure pratique?
abstract class Parent
{
protected function foobar($data)
{
//do something with data
return $result;
}
}
class Child extends Parent
{
public function foobar()
{
$data = ...;
return parent::foobar($data);
}
}
Comme vous pouvez le voir, foobar
est génériquement défini dans Parent
, puis Child
transmet des données spécifiques à chaque classe dans le parent qui renvoie le résultat. La raison en est que chaque classe enfant de parent a ses propres données, mais la méthode elle-même reste la même - seul le paramètre est différent. L'enfant expose également publiquement la méthode.
Est-ce une meilleure idée de faire quelque chose comme ceci, où je crée une méthode du même nom dans le parent et l'enfant? Ou est-ce que je devrais peut-être créer une méthode _foobar
dans la classe Parent
et avoir la méthode de Child
?
Je ne pense pas qu'il ait outrepassé cette fonction (ce n'est pas virtuel) mais l'a surchargé. ça fait la différence;) – Arseny