// referencia a la clase pokemon // https://gist.github.com/konami12/2359d276454cdcb81d291597a042e375 /* Para poder implementar el polimorfismo iniciaremos aplicando el principio de herencia. */ class TypeFire extends Pokemon { constructor(name, evolutions) { super(name, "fire", evolutions); } message() { // Utilizamos uno de los métodos de la clase padre return `Hola soy ${this.name} y soy de tipo fuego`; } } /* Creamos la instancia de la clase "TypeFire" pero en este ejemplo no modificamos el mêtodo attack */ const Charmander = new TypeFire("Charmander", ["Charmeleon", "Charizar"]); /* Invocamos el mêtodo attack pero aun tendra el comportamiento definido por la clase padre. */ const ATTACK_FIRE = Charmander.attack(); console.log(ATTACK_FIRE); // Salida : // Charmander, esta atacando. /* Para poder implementar el polimorfismo iniciaremos aplicando el principio de herencia. */ class TypeFire extends Pokemon { constructor(name, evolutions) { super(name, "fire", evolutions); } message() { // Utilizamos uno de los métodos de la clase padre return `Hola soy ${this.name} y soy de tipo fuego`; } /* En este caso sobre escribimos el mêtodo attack para definir un nuevo comportamiento. */ attack() { return `${this.name}, ataca con Aliento Igneo`; } } /* Creamos la instancia de la clase "TypeFire" */ const Charmander = new TypeFire("Charmander", ["Charmeleon", "Charizar"]); /* Invocamos el mêtodo attack pero en esta ocación conseguiremos una repuesta diferente. */ const ATTACK_FIRE = Charmander.attack(); console.log(ATTACK_FIRE); // Salida Charmander, ataca con Aliento Igneo.