Banane masquee Yé vé té fer la pô... | Bon alors j'ai cherché un peu dans mon coin et voilà à quoi j'ai abouti pour un ersatz d'héritage multiple:
Code :
- /***********************************************************/
- /***********************************************************/
- /*** ***/
- /*** LES PARAMETRES ET LES METHODES DE LA SUPER-CLASSE ***/
- /*** DOIVENT ETRE DEFINIES DANS SON CONSTRUCTEUR ***/
- /*** POUR QUE LES SOUS-CLASSES PUISSENT EN HERITER ***/
- /*** ***/
- /*** PAS DE SURCHARGE POSSIBLE ***/
- /*** IL FAUT BIEN S'ASSURER POUR CHAQUE SOUS-CLASSE ***/
- /*** QU'IL N'Y AIT PAS DE NOM DE PARAMETRE OU DE METHODE ***/
- /*** EN COMMUN QUAND ON PASSE : ***/
- /*** - DE LA SOUS-CLASSE A UNE DE SES SUPER-CLASSES ***/
- /*** - D'UNE SUPER-CLASSE A UNE AUTRE ***/
- /*** (SAUF SI EVENTUELLEMENT LES VALEURS SONT LES MEMES) ***/
- /*** ***/
- /***********************************************************/
- /***********************************************************/
- Object.prototype.implement = function() {
- this.base = arguments.shift();
- this.base.apply(this, arguments);
- delete this.base;
- }
|
Donc là après, pour faire hériter une classe d'une autre, il suffit de mettre dans son constructeur un appel à cette fonction implement avec comme paramètres le nom de la superclasse dont on veut hériter ainsi que les paramètres de son constructeur.
Pour être plus clair, rien de tel qu'un petit exemple:
Code :
- Pere = function(a,b) {
- this.a = a;
- this.b = b;
- this.sum = a+b;
- this.prop = function () {
- trace("Somme : " + this.sum);
- }
- }
- Mere = function(a) {
- this.a = a;
- this.oppose = -this.a;
- this.propr = function() {
- trace("Opposé : " + this.oppose);
- }
- }
- Fils = function(a,b) {
- this.implement(Pere,a,b);
- this.implement(Mere,a);
- this.product = a*b;
- }
|
---------------
Il y a 10 sortes de personnes. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas. *** Utilitaire pour MJ du jeu du dico
|