🎯 Objetivo: Neste capítulo, você vai aprender como a herança permite reutilizar código em C#, facilitando a manutenção e a organização do sistema. Você criará classes "base" (ou superclasses) e "derivadas" (ou subclasses), aproveitando atributos e métodos já existentes.
Herança é um dos quatro pilares da Programação Orientada a Objetos. É um mecanismo que permite criar novas classes baseadas em outras já existentes. Com a herança, você pode evitar a repetição de código e modelar relações do tipo "é um" (por exemplo, "um Cachorro é um Animal").
Exemplo do mundo real:
Imagine uma classe Animal que representa características e comportamentos gerais. A partir dela, você pode criar classes mais específicas, como Cachorro, Gato ou Pássaro. Eles herdam as características de Animal e adicionam as suas próprias.
Para criar uma herança em C#, usamos o caractere : após o nome da classe derivada, seguido pelo nome da classe base.
// Classe Base (Superclasse)
public class SuperClasse
{
// atributos e métodos
}
// Classe Derivada (Subclasse)
public class SubClasse : SuperClasse
{
// novos atributos e métodos
}
Animal e Classes DerivadasVamos criar uma classe base Animal e duas classes derivadas, Cachorro e Gato.
Classe Animal
public class Animal
{
public string Nome { get; set; }
public void EmitirSom()
{
Console.WriteLine("O animal faz um som.");
}
}
Agora, vamos criar as classes derivadas. Observe a sintaxe:
Classe Cachorro
public class Cachorro : Animal
{
// O Cachorro já herda a propriedade Nome e o método EmitirSom().
}
Classe Gato
public class Gato : Animal
{
// O Gato também herda a propriedade Nome e o método EmitirSom().
}
Diagrama de Classe
classDiagram
direction LR
class Animal {
- nome : String
+ Animal(nome : String)
+ emitirSom() : void
+ exibirInfo() : void
}
class Cachorro {
- raca : String
+ Cachorro(nome : String, raca : String)
+ emitirSom() : void
+ exibirInfo() : void
}
class PastorAlemao {
- farejador : boolean
+ PastorAlemao(nome : String, farejador : boolean)
+ emitirSom() : void
+ exibirInfo() : void
}
Animal <|-- Cachorro
Cachorro <|-- PastorAlemao