par
Hywan » 15 févr. 2008, 14:21
Il est probable qu'on ai besoin depuis une fille d'appeler le constructeur de la mère. En Java, ça doit être la première instruction de la méthode :
Code : Tout sélectionner
public class Mere {
public void Mere ( String message ) {
System.out.println(message);
}
}
public class Fille extends Mere {
public void Fille ( ) {
super("Hopla");
// le reste du code.
}
}
En PHP, on a la possibilité de lancer le constructeur de la mère n'importe quand, un avantage. Mais ça peut être le gros bazar.
Pourquoi utiliser un constructeur ? Il sert principalement à initialiser l'objet.
Pourquoi étendre un objet à un autre ? Principalement pour préciser l'objet parent. On a l'objet Mere qui propose des méthodes communes à tous ces enfants. Les enfants ayant la possibilité de surcharger les méthodes de la Mere.
Quand on surcharge le constructeur, cela signifie : on initialise pas la Mere, mais on laisse la Fille s'initialiser. Si la Fille a besoin d'utiliser les paramètres initiaux de la Mere, on propage la constructeur en faisant :
class Fille extends Mere {
public function __construct ( ) {
parent::__construct();
// suite du code.
}
}
Il est beaucoup plus logique de commencer par construire la Mere, puis la Fille.
Donc Cyrano a raison. La classe Mere permet à ces Filles d'utiliser des méthodes génériques ou communes. Les Filles ont la possibilité de les surcharger, ... de les redéfinir en quelques sortes (c'est faux, mais on schématise ...).
Les constructeurs des Filles sont donc -- en général -- très semblable à celui de la Mere, et appelle celui de la Mere si c'est bien construit.
Les classes étant des familles d'objets, si une Fille a un comportement différent de la Mere, c'est que l'architecture a été mal choisie à mon sens, et que les familles ont été mal construites/pensées.
Il est probable qu'on ai besoin depuis une fille d'appeler le constructeur de la mère. En Java, ça doit être la première instruction de la méthode : [code]public class Mere {
public void Mere ( String message ) {
System.out.println(message);
}
}
public class Fille extends Mere {
public void Fille ( ) {
super("Hopla");
// le reste du code.
}
}[/code]
En PHP, on a la possibilité de lancer le constructeur de la mère n'importe quand, un avantage. Mais ça peut être le gros bazar.
Pourquoi utiliser un constructeur ? Il sert principalement à initialiser l'objet.
Pourquoi étendre un objet à un autre ? Principalement pour préciser l'objet parent. On a l'objet Mere qui propose des méthodes communes à tous ces enfants. Les enfants ayant la possibilité de surcharger les méthodes de la Mere.
Quand on surcharge le constructeur, cela signifie : on initialise pas la Mere, mais on laisse la Fille s'initialiser. Si la Fille a besoin d'utiliser les paramètres initiaux de la Mere, on propage la constructeur en faisant : [php]class Fille extends Mere {
public function __construct ( ) {
parent::__construct();
// suite du code.
}
}[/php] Il est beaucoup plus logique de commencer par construire la Mere, puis la Fille.
Donc Cyrano a raison. La classe Mere permet à ces Filles d'utiliser des méthodes génériques ou communes. Les Filles ont la possibilité de les surcharger, ... de les redéfinir en quelques sortes (c'est faux, mais on schématise ...).
Les constructeurs des Filles sont donc -- en général -- très semblable à celui de la Mere, et appelle celui de la Mere si c'est bien construit.
Les classes étant des familles d'objets, si une Fille a un comportement différent de la Mere, c'est que l'architecture a été mal choisie à mon sens, et que les familles ont été mal construites/pensées.