Skip to content

Instantly share code, notes, and snippets.

@konami12
Last active August 26, 2020 06:23
Show Gist options
  • Save konami12/0558683cccdef34ac5663a0e89b1b15a to your computer and use it in GitHub Desktop.
Save konami12/0558683cccdef34ac5663a0e89b1b15a to your computer and use it in GitHub Desktop.
Principio de polimorfismo
// 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment