🎯 Objetivo: Neste capítulo, você irá dominar o conceito de polimorfismo e aprender a usar as palavras-chave virtual e override para sobrescrever o comportamento de métodos herdados em C#.


☝🏻Introdução

Neste capítulo, você aprenderá um dos pilares da Programação Orientada a Objetos: Herança. Veremos como criar classes que reaproveitam atributos e métodos de outras classes, como estender comportamentos e quando utilizar essa técnica.


🧬 Herança, Relembrando: O que é Herança?

Herança é o mecanismo que permite que uma classe herde os atributos e métodos de outra classe.

📚 Exemplo do Mundo Real

Imagine que temos uma classe Pessoa. Todas as pessoas têm nome e idade. Agora queremos representar um Aluno, que também tem nome e idade, mas também tem uma matrícula. Faz sentido reaproveitar a estrutura da Pessoa.

🧪 Exemplo Prático

Classe Pessoa

public class Pessoa
{
    public string Nome { get; set; }
    public int Idade { get; set; }

    public void Apresentar()
    {
        Console.WriteLine($"Olá! Meu nome é {Nome} e tenho {Idade} anos.");
    }
}

Classe Aluno (Herança de Pessoa)

public class Aluno : Pessoa
{
    public string Matricula { get; set; }

    public void MostrarMatricula()
    {
        Console.WriteLine($"Minha matrícula é: {Matricula}");
    }
}

Classe Principal

public class Main
{
    public static void Main(string[] args)
    {
        Aluno aluno = new Aluno();
        aluno.Nome = "Lucas";
        aluno.Idade = 17;
        aluno.Matricula = "2025A01";

        aluno.Apresentar();        // Método herdado da classe Pessoa
        aluno.MostrarMatricula();  // Método da classe Aluno
    }
}

🔑 Palavra-chave : (Herança)

Em C#, o símbolo de dois pontos (:) é utilizado para indicar que uma classe está herdando de outra:

public class Aluno : Pessoa
{
    // agora Aluno tem todos os atributos e métodos de Pessoa
}

🔁 Sobrescrita: Reescrevendo Métodos: virtual e override

A Sobrescrita é a técnica que permite a uma classe filha (subclasse) mudar a implementação de um método que ela herdou da classe pai (superclasse). Em C#, isso é feito usando um par de palavras-chave: virtual e override.