0Pricing
C# Academy · Aula

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!

Polimorfismo e sobrescrita de métodos — ilustração 1

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!

Polimorfismo e sobrescrita de métodos — ilustração 10

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

  1. O que é programação orientada a objetos?
  2. Definindo classes e objetos
  3. Entendendo propriedades e métodos
  4. Construtores em C#
  5. Encapsulamento e modificadores de acesso
  6. Herança: reutilizando código
  7. Polimorfismo e sobrescrita de métodos
← Voltar para C# Academy