Classes e métodos abstratos
Defina o que as subclasses devem implementar.
Classes e métodos abstratos é uma aula grátis de Dart Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Dart Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Dart Academy inclui 4 aulas no total.
O que significa abstrato
Uma classe abstrata é um modelo que você pode descrever, mas nunca criar diretamente. Ela existe para ser estendida, não para ser instanciada sozinha.
Marcando uma classe como abstrata
Você adiciona a palavra-chave abstract antes de class. Isso informa a Dart que a classe está incompleta e deve servir como base compartilhada.
abstract class Shape {
double area();
}Métodos abstratos não têm corpo
Um método abstrato declara um nome e uma assinatura, mas termina com ponto e vírgula, deixando o trabalho efetivo para cada subclasse.
abstract class Shape {
double area(); // no body
}Você não pode instanciá-la
Tentar escrever Shape() causa um erro de compilação. Dart recusa porque uma classe abstrata está inacabada e não possui uma implementação real.
var s = Shape(); // error: abstractSubclasses preenchem as lacunas
Uma subclasse usa extends e deve fornecer um corpo para cada método abstrato, transformando o modelo em algo utilizável.
class Circle extends Shape {
final double r;
Circle(this.r);
double area() => 3.14 * r * r;
}Métodos concretos também são permitidos
Uma classe abstrata pode incluir métodos concretos totalmente implementados. As subclasses os herdam diretamente e só precisam preencher os abstratos.
abstract class Shape {
double area();
void describe() => print('Area is ' + area().toString());
}Campos em classes abstratas
Classes abstratas também podem conter campos e construtores. Eles são executados quando uma subclasse é criada, mantendo o estado compartilhado na base.
abstract class Shape {
final String name;
Shape(this.name);
}O compilador impõe o contrato
Se uma subclasse esquecer um método abstrato, Dart informará um erro antes mesmo de você executar o código. O contrato é verificado automaticamente.
class Square extends Shape {} // error: area() missingPor que usar classes abstratas
Elas permitem que vários tipos compartilhem uma mesma estrutura, garantindo que cada um forneça seu próprio comportamento. Você define um contrato claro uma vez e o reutiliza em todos os lugares.
Getters abstratos
Métodos não são as únicas coisas que podem ser deixadas abstratas. Um getter sem corpo funciona da mesma forma e deve ser definido pelas subclasses.
abstract class Shape {
String get label;
}Mantendo referências abstratas
Você pode armazenar qualquer subclasse em uma variável cujo tipo seja a classe abstrata. O tipo promete um comportamento sem indicar uma classe concreta.
Shape s = Circle(2);
print(s.area());Verificação rápida
Uma pergunta rápida sobre classes abstratas.
Recapitulação
Classes abstratas são modelos que você estende, não instancia. Métodos abstratos não têm corpo, e subclasses concretas devem implementá-los. Muito bem! 🎯
Perguntas Frequentes
A aula “Classes e métodos abstratos” é grátis?
Sim — o texto completo de “Classes e métodos abstratos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Dart Academy, atualize para CoddyKit PRO. O curso de Dart Academy inclui 4 aulas no total.
O que vou aprender em “Classes e métodos abstratos”?
Defina o que as subclasses devem implementar. Você pratica Dart Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Dart Academy?
Nenhuma experiência prévia é necessária. Dart Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Classes e métodos abstratos”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Dart Academy?
Sim. Cada aula de Dart Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Classes e métodos abstratos
- Interfaces implícitas e implements
- Polimorfismo por meio de tipos compartilhados
- Composição em vez de herança