Las clases de javascript, introducidas en ECMAScript 2015, son una mejora sintáctica sobre la herencia basada en prototipos de JavaScript. La sintaxis de las clases no introduce un nuevo modelo de herencia orientada a objetos en JavaScript. Las clases de JavaScript proveen una sintaxis mucho más clara y simple para crear objetos y lidiar con la herencia.
// ++++++++++ clase ++++++++++
class Perro{
// ++++++++++ constructor ++++++++++
constructor(nombre,genero){
//atributos
this.nombre = nombre;
this.genero = genero;
}// ++++++++++ constructor ++++++++++
//++++++++++ Metodo ++++++++++
ladrad(){
console.log("Guaf Guaf");
}//++++++++++ Metodo ++++++++++
}// ++++++++++ clase ++++++++++
const simba = new Perro("simba","macho");
console.log(simba); //mandar a llamar al objeto
simba.ladrad(); // mandar a llamar al metodo
Para utilizar herencia se necesita la palabra reservada extends seguido de la clase padre o de la que quiere que herede.
la palabra reservada super() manda a llamar al constructor de la calse padre.
class Perro {
// ++++++++++ constructor ++++++++++
constructor(nombre, genero) {
//atributos
this.nombre = nombre;
this.genero = genero;
} // ++++++++++ constructor ++++++++++
//++++++++++ Metodo ++++++++++
ladrad() {
console.log(` guaf guaf mi nombre es ${this.nombre}`);
}
caminar(){
console.log("Toy caminando");
}
//++++++++++ Metodo ++++++++++
} // ++++++++++ clase ++++++++++
const simba = new Perro("simba", "macho");
console.log(simba);//! mandar a llamar al objeto
simba.ladrad();//! mandar a llamar al metodo
// ############ HERENCIA ##########
class Gato extends Perro{
constructor(nombre, genero, color){
super(nombre, genero);
this.color = color;
}
ladrad(){
console.log(`miau miau mi nombre es ${this.nombre}`);
}
}
const beto = new Gato("beto","hembra","blanco");
console.log(beto);
beto.ladrad();
beto.caminar();