abstract class Classes abstratas
Última atualização: 2026-10-22
abstract class Classes abstratas
Uma classe abstrata é uma classe base pela metade: pode carregar implementação real e, ao mesmo tempo, declarar membros abstratos (abstract area(): number) que as subclasses devem completar. Não pode ser instanciada diretamente, apenas estendida — ideal para "subclasses compartilham o esqueleto, mas donas dos detalhes".
| Grupo | Funções e Classes |
|---|---|
| Tipo | Sintaxe |
| Modo strict | Não necessário |
ℹ️ Info O editor transpila TypeScript para JavaScript e o executa (sem verificação de tipos); veja a Saída de cada exemplo para o resultado da verificação.
📝 Sintaxe
abstract class Shape {
constructor(protected name: string) {}
abstract area(): number; // método abstrato: apenas a assinatura
describe(): string { // método concreto: herdado como está
return `${this.name}: ${this.area().toFixed(2)}`;
}
}
class Circle extends Shape {
constructor(private radius: number) { super("circle"); }
area(): number { return Math.PI * this.radius ** 2; }
}
⚙️ Parâmetros
| abstract class | Classe abstrata: não pode receber new, apenas ser estendida |
|---|---|
| abstract area(): number | Membro abstrato: apenas assinatura; as subclasses devem implementá-lo ou o compilador reporta erro |
| protected | Frequentemente em par com classes abstratas: estado como name destinado às subclasses |
Retorno:Métodos abstratos declaram apenas assinaturas; métodos concretos recebem tipos de retorno normais. Nenhuma instância abstrata existe em execução — todo objeto é uma instância de subclasse.
▶ Exemplo
Edite o código abaixo e clique em Testar para ver o resultado transpilado:
Saída:
circle: 3.14
square: 4.00
(Saída de execução após a transpilação; new Shape("x") gera o erro de compilação TS2511 — mesmo que o JS emitido seja só uma classe comum)