DEV Community

Cover image for POO: Herencia
Ushieru Kokoran
Ushieru Kokoran

Posted on

 

POO: Herencia

Requerimientos:

  • NodeJS.
  • JavaScript básico.
  • POO básico.

¿Qué es la Herencia?

La herencia es la capacidad que tiene una clase «hija» de "recibir" los métodos y propiedades de una clase «padre».

Ejemplo

Realizaremos una clase Humano la cual sera nuestra clase padre, y como hijo tendremos a la clase SuperHumano que heredara todas las propiedades y metodos de Humano.

👋 Para que una clase herede los atributos de otra tendremos que usar la palabra reservada extends.

Humano.js
class Humano {
    nombre
    edad

    constructor(nombre, edad){
        this.nombre = nombre
        this.edad = edad
    }

    dormir(){
        console.log(this.nombre, 'esta durmiendo...')
    }

    comer(){
        console.log(this.nombre, 'esta comiendo...')
    }

    programar(){
        console.log(this.nombre, 'esta programando...')
    }

    toString(){
        console.log('Class:', this.constructor.name)
        console.log('Nombre:', this.nombre)
        console.log('Edad:', this.edad)
    }
}

module.exports = Humano
Enter fullscreen mode Exit fullscreen mode

👋 Para tener acceso a los métodos de la clase padre tendremos que usar el método reservado super, por eso encontraras que a veces se refieren a la clase padre como «SuperClass».

SuperHumano.js
const Humano = require('./Humano')

class SuperHumano extends Humano{
    poder

    constructor(nombre, edad, poder){
        super(nombre, edad)
        this.poder = poder
    }

    usarPoder(){
        console.log(this.nombre, 'usa su poder de', this.poder)
    }

    toString(){
        super.toString()
        console.log('Poder:', this.poder);
    }
}

module.exports = SuperHumano
Enter fullscreen mode Exit fullscreen mode

Lo hicimos! 🚀

Como puedes ver en la clase SuperHumano No se declaran los metodos comer, programar o dormir pero podremos hacer uso de ellos gracias a que hereda de nuestra clase Humano. ¿Qué tal si lo probamos?

index.js
const Humano = require('./Humano')
const SuperHumano = require('./SuperHumano')

const humano = new Humano('Ushieru', 20)
humano.toString()
humano.comer()
humano.programar()
humano.dormir()

console.log('\n---------------------------\n')

const superHumano = new SuperHumano('Super Ushieru', 22, 'Volar')
superHumano.toString()
superHumano.comer()
superHumano.programar()
superHumano.dormir()
superHumano.usarPoder()
Enter fullscreen mode Exit fullscreen mode

En hora buena! 🎉

Acabamos de crear nuestra primer herencia! Ahora te invito a poner aprueba tus habilidades y usar la herencia en tus proyectos. Cuéntame tu experiencia o deja tus preguntas en comentarios. Suerte Devs! 👩‍💻👨‍💻

Top comments (0)

This post blew up on DEV in 2020:

js visualized

🚀⚙️ JavaScript Visualized: the JavaScript Engine

As JavaScript devs, we usually don't have to deal with compilers ourselves. However, it's definitely good to know the basics of the JavaScript engine and see how it handles our human-friendly JS code, and turns it into something machines understand! 🥳

Happy coding!