CodeGym /Cursos /Frontend SELF PT /Herança de Classes

Herança de Classes

Frontend SELF PT
Nível 40 , Lição 0
Disponível

7.1 Fundamentos da Herança

A herança de classes em JavaScript permite criar novas classes baseadas em classes já existentes, reutilizando e expandindo sua funcionalidade. Isso é um aspecto chave da programação orientada a objetos (OO), que permite criar hierarquias de classes e gerenciar o comportamento dos objetos.

Para herança de classes, é utilizada a palavra-chave extends. A classe que herda de outra é chamada de classe derivada (subclass), e a classe da qual a herança é feita é chamada de classe base (superclass).

Exemplo:

JavaScript
    
      class Animal {
        constructor(name) {
          this.name = name;
        }

        speak() {
          console.log(`${this.name} makes a noise.`);
        }
      }

      class Dog extends Animal {
        speak() {
          console.log(`${this.name} barks.`);
        }
      }

      const dog = new Dog('Rex');
      dog.speak(); // "Rex barks."
    
  

Explicação:

  • A classe Animal é a classe base com um construtor e um método speak()
  • A classe Dog herda de Animal e reescreve o método speak()
  • A instância dog da classe Dog usa o método reescrito speak()

7.2 Palavra-chave super

A palavra-chave super é usada para chamar o construtor ou métodos da classe base a partir da classe derivada.

1. Chamada do construtor da classe base

A classe derivada deve chamar o construtor da classe base usando super() antes de utilizar this.

Exemplo:

O construtor Dog chama super(name) para inicializar a propriedade name da classe base Animal.

JavaScript
    
      class Animal {
        constructor(name) {
          this.name = name;
        }

        speak() {
          console.log(`${this.name} makes a noise.`);
        }
      }

      class Dog extends Animal {
        constructor(name, breed) {
          super(name);
          this.breed = breed;
        }

        speak() {
          console.log(`${this.name} barks.`);
        }
      }

      const dog = new Dog('Rex', 'Labrador');
      console.log(dog.name); // "Rex"
      console.log(dog.breed); // "Labrador"
      dog.speak(); // "Rex barks."
    
  

2. Chamada dos métodos da classe base

Os métodos da classe base podem ser chamados a partir da classe derivada usando super.

Exemplo:

O método speak() da classe Dog chama o método speak() da classe base Animal usando super.speak(), e então executa sua própria lógica.

JavaScript
    
      class Animal {
        constructor(name) {
          this.name = name;
        }

        speak() {
          console.log(`${this.name} makes a noise.`);
        }
      }

      class Dog extends Animal {
        speak() {
          super.speak(); // Chamada do método da classe base
          console.log(`${this.name} barks.`);
        }
      }

      const dog = new Dog('Rex');
      dog.speak();

      // "Rex makes a noise."
      // "Rex barks."
    
  

7.3 Herança e reescrita de métodos

A herança permite que as classes derivadas reescrevam métodos da classe base. Isso possibilita alterar ou expandir a funcionalidade dos métodos.

Exemplo:

O método speak() da classe Dog reescreve o método speak() da classe base Animal, fornecendo sua própria implementação.

JavaScript
    
      class Animal {
        constructor(name) {
          this.name = name;
        }

        speak() {
          console.log(`${this.name} makes a noise.`);
        }
      }

      class Dog extends Animal {
        speak() {
          console.log(`${this.name} barks.`);
        }
      }

      const animal = new Animal('Generic Animal');
      animal.speak(); // "Generic Animal makes a noise."

      const dog = new Dog('Rex');
      dog.speak(); // "Rex barks."
    
  

7.4 Herança e métodos adicionais

A classe derivada pode adicionar novos métodos que não existem na classe base.

Exemplo:

A classe Dog adiciona um novo método fetch(), que não existe na classe base Animal.

JavaScript
    
      class Animal {
        constructor(name) {
          this.name = name;
        }

        speak() {
          console.log(`${this.name} makes a noise.`);
        }
      }

      class Dog extends Animal {
        speak() {
          console.log(`${this.name} barks.`);
        }

        fetch() {
          console.log(`${this.name} is fetching.`);
        }
      }

      const dog = new Dog('Rex');
      dog.speak(); // "Rex barks."
      dog.fetch(); // "Rex is fetching."
    
  

7.5 Verificando Herança

Para verificar a herança, você pode usar o operador instanceof e o método isPrototypeOf().

Exemplo:

O operador instanceof verifica se um objeto é uma instância de uma classe. O método isPrototypeOf() verifica se o protótipo de um objeto é parte da cadeia de protótipos de outro objeto.

JavaScript
    
      console.log(dog instanceof Dog); // true
      console.log(dog instanceof Animal); // true
      console.log(Animal.prototype.isPrototypeOf(Dog.prototype)); // true
    
  
1
Tarefa
Frontend SELF PT, nível 40, lição 0
Bloqueado
Herança com super
Herança com super
1
Tarefa
Frontend SELF PT, nível 40, lição 0
Bloqueado
Método hunt no Predator
Método hunt no Predator
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION