Polimorfismo e sobrescrita de métodos
Domine o polimorfismo para criar código flexível e reutilizável por meio da sobrescrita de métodos
Polimorfismo e sobrescrita de métodos é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 7 de 7. 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 7 aulas no total.
Introdução ao polimorfismo
Polimorfismo e substituição de métodos
Bem-vindo à próxima lição! Nesta lição, você aprenderá sobre polimorfismo, um conceito essencial da Programação Orientada a Objetos, e como ele permite substituir métodos para fornecer código flexível e reutilizável. Vamos começar!

O que é polimorfismo?
O que é polimorfismo?
Polimorfismo significa “muitas formas” e permite que objetos de classes diferentes sejam tratados como objetos de uma classe base comum. Isso proporciona flexibilidade e reutilização ao seu código.
Exemplo: Um método pode se comportar de maneira diferente dependendo do tipo de objeto com o qual está trabalhando.
Ponto-chave: O polimorfismo é obtido em C# por meio da substituição de métodos e de interfaces.
Entendendo a substituição de métodos
Entendendo a substituição de métodos
A substituição de métodos permite que uma classe derivada forneça uma implementação específica de um método já definido em sua classe base. Use a palavra-chave virtual na classe base e a palavra-chave override na classe derivada. Exemplo:
Dica: A substituição de métodos garante que o método correto seja chamado para um objeto, independentemente do tipo da referência.
using System;
class Animal {
public virtual void Speak() {
Console.WriteLine("The animal makes a sound.");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
class Cat : Animal {
public override void Speak() {
Console.WriteLine("The cat meows.");
}
}
class Program {
static void Main() {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.Speak(); // Outputs: The dog barks.
myCat.Speak(); // Outputs: The cat meows.
}
}
Usando o polimorfismo
Usando o polimorfismo
O polimorfismo permite escrever código que funcione com diferentes tipos de objetos por meio de uma interface comum. Exemplo:
Ponto-chave: O polimorfismo permite escrever código mais genérico e reutilizável.
using System;
class Animal {
public virtual void Speak() {
Console.WriteLine("The animal makes a sound.");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
class Cat : Animal {
public override void Speak() {
Console.WriteLine("The cat meows.");
}
}
class Program {
static void Main() {
Animal[] animals = { new Dog(), new Cat() };
foreach (Animal animal in animals) {
animal.Speak(); // Calls the appropriate method for each object
}
}
}
Usando a palavra-chave base com substituição
Usando a palavra-chave base com substituição
A palavra-chave base é usada para chamar um método da classe base dentro do método substituído. Exemplo:
Dica: Use base quando quiser manter a funcionalidade da classe base em um método substituído.
using System;
class Animal {
public virtual void Speak() {
Console.WriteLine("The animal makes a sound.");
}
}
class Dog : Animal {
public override void Speak() {
base.Speak(); // Calls the base class method
Console.WriteLine("The dog barks.");
}
}
class Program {
static void Main() {
Dog myDog = new Dog();
myDog.Speak(); // Outputs: The animal makes a sound. The dog barks.
}
}
Classes e métodos abstratos
Classes e métodos abstratos
As classes abstratas fornecem um modelo para as classes derivadas. Elas podem incluir métodos abstratos, que devem ser substituídos na classe derivada. Exemplo:
Ponto-chave: Os métodos abstratos obrigam as classes derivadas a fornecer sua própria implementação.
using System;
abstract class Animal {
public abstract void Speak(); // Abstract method
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("The dog barks.");
}
}
class Program {
static void Main() {
Animal myDog = new Dog();
myDog.Speak(); // Outputs: The dog barks.
}
}
Desafio prático
Desafio prático
Crie uma classe abstrata Shape com um método abstrato CalculateArea(). Derive as classes Rectangle e Circle, que devem implementar CalculateArea(). 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 = 4, Height = 5 };
Shape circle = new Circle { Radius = 3 };
Console.WriteLine("Rectangle Area: " + rectangle.CalculateArea());
Console.WriteLine("Circle Area: " + circle.CalculateArea());
}
}
Melhores práticas para polimorfismo
Melhores práticas para polimorfismo
Veja algumas práticas recomendadas:
- Use polimorfismo para simplificar o código e evitar duplicação.
- Substitua apenas os métodos que exigem um comportamento específico nas classes derivadas.
- Use classes e métodos abstratos para interfaces compartilhadas entre classes derivadas.
Dica: O polimorfismo facilita a extensão e a manutenção do seu código.
Muito bem!
Muito bem!
Parabéns! Você aprendeu a usar polimorfismo e substituição de métodos para escrever código flexível e reutilizável. Na próxima lição, vamos explorar o trabalho com interfaces para obter abstração e implementar vários comportamentos. Continue programando!

Perguntas Frequentes
A aula “Polimorfismo e sobrescrita de métodos” é grátis?
Sim — o texto completo de “Polimorfismo e sobrescrita de métodos” é 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 7 aulas no total.
O que vou aprender em “Polimorfismo e sobrescrita de métodos”?
Domine o polimorfismo para criar código flexível e reutilizável por meio da sobrescrita de métodos 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 7 de 7.
Quanto tempo leva a aula “Polimorfismo e sobrescrita de métodos”?
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
- O que é programação orientada a objetos?
- Definindo classes e objetos
- Entendendo propriedades e métodos
- Construtores em C#
- Encapsulamento e modificadores de acesso
- Herança: reutilizando código
- Polimorfismo e sobrescrita de métodos