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.