Herança
Parte da seção Programação Orientada a Objetos do Journey de JavaScript da Coddy — lição 24 de 56.
Herança em JavaScript OOP é uma maneira de uma classe obter acesso a todas as propriedades e métodos de outra classe.
Vejamos um exemplo. Crie uma classe pai:
class Vehicle {
constructor(brand, model) {
this.brand = brand;
this.model = model;
}
drive() {
console.log("Driving!");
}
}Agora crie uma classe filha que herda de Vehicle:
// Car herda de Vehicle
class Car extends Vehicle {
honk() {
console.log("Beep beep!");
}
}Crie uma instância da classe filha:
const myCar = new Car("Toyota", "Camry");Acesse propriedades e métodos:
console.log(myCar.brand); // "Toyota" - herdado de Vehicle
console.log(myCar.model); // "Camry" - herdado de Vehicle
// Car pode acessar os métodos de Vehicle
myCar.drive(); // "Driving!" - herdado de Vehicle
// Car também possui seus próprios métodos
myCar.honk(); // "Beep beep!" - específico de CarDesafio
Você recebeu uma classe Animal e uma classe Dog que herda dela. Sua tarefa é criar um objeto myDog com o nome "Buddy" e idade 3.
Folha de consulta
A herança permite que uma classe obtenha acesso a propriedades e métodos de outra classe usando a palavra-chave extends.
Classe pai:
class Vehicle {
constructor(brand, model) {
this.brand = brand;
this.model = model;
}
drive() {
console.log("Driving!");
}
}Classe filha herdando do pai:
class Car extends Vehicle {
honk() {
console.log("Beep beep!");
}
}A classe filha herda todas as propriedades e métodos da classe pai e também pode ter os seus próprios:
const myCar = new Car("Toyota", "Camry");
console.log(myCar.brand); // "Toyota" - herdado
myCar.drive(); // "Driving!" - herdado
myCar.honk(); // "Beep beep!" - método próprioExperimente você mesmo
import { Dog } from './animal.js';
// TODO: Criar o objeto myDog com o nome "Buddy" e idade 3.
// Código de teste - não modifique
console.log(myDog.name); // Deve exibir "Buddy"
console.log(myDog.age); // Deve exibir 3Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Programação Orientada a Objetos
1Objetos e a Palavra-chave this
Revisão Rápida: ObjetosAdicionando Métodos a ObjetosEntendendo a Palavra-chave thisFunções ConstrutorasA Palavra-chave newDesafio de Recapitulação7Herança e a palavra-chave extends
HerançaA relação "é um"A palavra-chave extendsO método super()Herdando propriedades e métodosDesafio de recapitulação10Polimorfismo
O que é Polimorfismo?Sobrescrevendo Métodos HerdadosUsando superDesafio de Recapitulação13Composição vs. Herança
A relação "tem um" vs. "é um"Os limites da herança profundaConstruindo objetos2Organizando o Código
O que são Módulos?Exportando com exportImportando com importExportações Default vs. Nomeadas5Encapsulamento e Acesso
EncapsulamentoCampos de Classe Públicos e PrivadosMétodos PrivadosDesafio de Recapitulação8Organizando Código POO
Organizar Classes em Módulos11Projeto: Um Renderizador de Formas
Configuração: Classe Shape e ExportaçãoHerança da Classe Circle14Sistema de Gerenciamento de Biblioteca
Projetando a BibliotecaClasse Livro com Composição