OOP - Abstração
É a capacidade de definir comportamentos e estados sem necessariamente estar preso à uma implementação. Desse modo conseguimos criar uma obrigação de implementação nas classes que vão herdar da classe abstrata.
public abstract class Pessoa
{
private readonly string _nome;
public string Nome => _nome;
protected Pessoa(string nome)
{
_nome = nome;
}
public abstract void PrintNome(); // comportamento abstrato
}
public class Cliente : Pessoa
{
private readonly int _matricula;
public Cliente(string nome, int matricula) : base(nome)
{
_matricula = matricula;
}
public override void PrintNome()
{
Console.WriteLine($"Nome: {Nome}, Matricula {_matricula}");
}
}