Cómo extender una clase de JavaScript

Javascript

Desde JavaScript ES6 podemos definir clases usando la notación class, por lo que los el uso de prototipos será pronto algo del pasado. Además, las clases de JavaScript también soportan herencia al igual que la mayor parte de los lenguajes orientados a objetos. En esta guía vamos a ver cómo puedes extender una clase de JavaScript.

La herencia permite definir una clase general y extenderla con otras clases más específicas que heredarán las propiedades y los métodos definidos en la clase general. De este modo podemos crear funciones que acepten un objeto de la clase general como parámetro, pudiendo proporcionar también cualquier objeto de las clases que heredan de ella. Por un lado ahorramos líneas de código y por otro creamos aplicaciones más consistentes.

Para ver cómo funciona la herencia vamos a partir del siguiente ejemplo:

class Animal
{
  comer() {
    // ...
  }
}

Todos los animales se alimentan, por lo que tiene sentido definir el método comer en la clase general Animal. Vamos a crear una instancia de la clase Animal usando la sentencia new:

const gato = new Animal();
gato.comer();

Podríamos ser más específicos y agregar más métodos a la clase Animal, pero resulta que no todos los animales caminan, nadan o vuelan, por lo que lo mejor es definir estos métodos en clases que extiendan de la clase Animal con sus respectivas propiedades y métodos.

Por ejemplo, vamos a definir la clase Pez con el método nadar:

class Pez extends Animal
{
  nadar() {
    //...
  }
}

Del mismo modo, vamos a definir también la clase Pajaro con el método volar:

class Pajaro extends Animal
{
  volar() {
    //...
  }
}

Hora también podrás instanciar las nuevas clases que hemos creado usando las sentencia new. Estas instancias incluyen tantos los métodos de la clase Animal de la que heredan como sus propios métodos:

const sardina = new Pez();
sardina.comer();
sardina.nadar();
 
const gorrion = new Pajaro();
gorrion.comer();
gorrion.volar();

Y esto ha sido todo.


Avatar de Edu Lazaro

Edu Lázaro: Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

👋 Hola! Soy Edu, me encanta crear cosas y he redactado esta guía. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirla en Twitter 😊

Si quieres conocer mis proyectos, sígueme en Twitter.

Deja una respuesta

“- Hey, Doc. No tenemos suficiente carretera para ir a 140/h km. - ¿Carretera? A donde vamos, no necesitaremos carreteras.”