Classes abstratas
Explore classes abstratas e seu papel na criação de uma estrutura compartilhada para classes derivadas
Classes abstratas é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 2 de 6. 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 C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 6 aulas no total.
Classes abstratas
Classes abstratas
Bem-vindo à próxima lição! Nesta lição, você aprenderá sobre classes abstratas em C#, sua finalidade e como elas diferem das interfaces. Vamos começar!

O que é uma classe abstrata?
O que é uma classe abstrata?
Uma classe abstrata é uma classe que não pode ser instanciada diretamente. Ela serve como modelo para outras classes e pode incluir métodos abstratos, que devem ser implementados pelas classes derivadas.
Ponto-chave: As classes abstratas podem incluir tanto métodos totalmente implementados quanto métodos apenas declarados (métodos abstratos).
Definindo uma classe abstrata
Definindo uma classe abstrata
Para definir uma classe abstrata, use a palavra-chave abstract. Exemplo:
Dica: Use classes abstratas para fornecer uma base comum para classes relacionadas.
using System;
abstract class Animal {
public abstract void Speak(); // Abstract method
public void Sleep() { // Non-abstract method
Console.WriteLine("The animal is sleeping.");
}
}
Implementando uma classe abstrata
Implementando uma classe abstrata
As classes derivadas devem implementar todos os métodos abstratos da classe abstrata. Exemplo:
Ponto-chave: Os métodos abstratos definem o comportamento que deve ser implementado pelas classes derivadas.
using System;
abstract class Animal {
public abstract void Speak(); // Abstract method
public void Sleep() {
Console.WriteLine("The animal is sleeping.");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
class Program {
static void Main() {
Dog myDog = new Dog();
myDog.Speak(); // Outputs: The dog barks.
myDog.Sleep(); // Outputs: The animal is sleeping.
}
}
Classes abstratas versus interfaces
Classes abstratas versus interfaces
Tanto as classes abstratas quanto as interfaces são usadas para abstração, mas diferem em vários aspectos:
- As classes abstratas podem ter métodos implementados e abstratos, enquanto as interfaces só podem ter métodos abstratos (antes do C# 8.0).
- As classes abstratas podem incluir campos, construtores e modificadores de acesso para seus membros.
- Uma classe pode herdar de apenas uma classe abstrata, mas pode implementar várias interfaces.
Dica: Use classes abstratas para classes estreitamente relacionadas e interfaces para uma abstração mais ampla.
Quando usar classes abstratas
Quando usar classes abstratas
As classes abstratas são mais adequadas quando:
- Você deseja definir uma classe base comum com funcionalidade compartilhada.
- Você precisa incluir métodos não abstratos que forneçam uma implementação padrão.
- Você está trabalhando com classes relacionadas que compartilham uma hierarquia comum.
Exemplo: Uma classe abstrata “Shape” para as classes “Circle” e “Rectangle”.
Desafio prático
Desafio prático
Crie uma classe abstrata Shape com um método abstrato CalculateArea(). Implemente esse método nas classes derivadas Rectangle e Circle. Exemplo:
using System;
abstract class Shape {
public abstract double CalculateArea();
}
class Rectangle : Shape {
public double Width { get; set; }
public double Height { get; set; }
public override double CalculateArea() {
return Width * Height;
}
}
class Circle : Shape {
public double Radius { get; set; }
public override double CalculateArea() {
return Math.PI * Radius * Radius;
}
}
class Program {
static void Main() {
Shape rectangle = new Rectangle { Width = 5, Height = 4 };
Shape circle = new Circle { Radius = 3 };
Console.WriteLine("Rectangle Area: " + rectangle.CalculateArea());
Console.WriteLine("Circle Area: " + circle.CalculateArea());
}
}
Melhores práticas para classes abstratas
Melhores práticas para classes abstratas
Veja algumas práticas recomendadas:
- Use classes abstratas quando houver funcionalidade compartilhada que precise ser herdada.
- Mantenha a classe abstrata focada e evite adicionar membros desnecessários.
- Combine classes abstratas com interfaces quando apropriado.
Dica: As classes abstratas devem fornecer uma base sólida para as classes derivadas.
Muito bem!
Muito bem!
Parabéns! Você aprendeu a usar classes abstratas para definir comportamentos compartilhados e impor consistência entre classes derivadas. Na próxima lição, vamos explorar membros e métodos estáticos em C#. Continue programando!

Perguntas Frequentes
A aula “Classes abstratas” é grátis?
Sim — o texto completo de “Classes abstratas” é 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 C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 6 aulas no total.
O que vou aprender em “Classes abstratas”?
Explore classes abstratas e seu papel na criação de uma estrutura compartilhada para classes derivadas Você pratica C# 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 C# Academy?
Nenhuma experiência prévia é necessária. C# 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 2 de 6.
Quanto tempo leva a aula “Classes abstratas”?
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 C# Academy?
Sim. Cada aula de C# 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
- Introdução às interfaces
- Classes abstratas
- Membros e métodos estáticos
- Explorando enumerações e estruturas
- Delegados e eventos
- Trabalhando com coleções: listas, dicionários e filas