Introdução
Subclasses podem substituir a implementação de métodos herdados usando override:
Sem override
class TransmissorBase {
logar(msg: string): void {
console.log(msg);
}
}
class TransmissorReinf extends TransmissorBase {
logar(msg: string): void {
// sobrescreve, mas TypeScript não verifica
console.log(`[REINF] ${msg}`);
}
}
Com override — recomendado
class TransmissorReinf extends TransmissorBase {
override logar(msg: string): void {
console.log(`[REINF] ${msg}`);
}
}
O override explícito faz o TypeScript verificar que o método realmente existe na classe pai — se você errar o nome, ele avisa:
class TransmissorReinf extends TransmissorBase {
override lagar(msg: string): void { // ❌ erro — "lagar" não existe na base
console.log(`[REINF] ${msg}`);
}
}
Chamando o método da classe pai com super
class TransmissorBase {
protected logar(msg: string): void {
console.log(`[BASE] ${msg}`);
}
}
class TransmissorReinf extends TransmissorBase {
override logar(msg: string): void {
super.logar(msg); // chama o pai primeiro
console.log(`[REINF] ${msg}`); // depois adiciona comportamento
}
}
Top comments (0)