C# - Diferentes tipos de herança


 Hoje veremos os diferentes tipos de herança suportados na linguagem C#.

Neste artigo vamos recordar um dos recursos orientados a objeto mais usado na linguagem C#, a herança.

  1. Herança é um conceito chave usado na programação orientada a objetos para descrever uma relação entre as classes;
  2. Por meio da herança uma classe copia ou herda todas as propriedades, atributos e métodos de uma outra classe, podendo assim estender sua funcionalidade;
  3. A classe que cede os membros para a outra classe é chamada superclasse, classe pai ou classe base;
  4. A classe que herda os membros da outra classe é chamada subclasse ou classe derivada;
  5. A herança permite a reutilização de código e especifica um relacionamento de especialização/generalização do tipo "é um";

A linguagem C# suporta os seguintes tipos de herança:

1- Herança Simples

É o tipo de herança em que há uma classe base e uma classe derivada.

public class Conta       //classe base
{
    public int Numero { get; set; }
    public double Saldo { get; private set; }
}

public class ContaPoupanca : Conta           
//classe derivada

{
     public int JurosMensais { get; set; }
}

2- Herança Hierárquica

Este é o tipo de herança em que existem várias classes derivadas de uma classe base.

Esse tipo de herança é usado quando há um requisito de um recurso de classe necessário em várias classes.

class Program
 {
        static void Main(string[] args)
                     
        {
            B objl = new B();
            C obj2 = new C();

            objl.Exibir();
            objl.Mostrar();
            obj2.Apresentar();
            Console.ReadKey();
        }       
}
      class A
      {
          public void Exibir()
          {
                Console.WriteLine("Método da classe A");
          }
      }
      class B : A   // A classe B deriva da classe A
      {
            public void Mostrar()
            {
                Console.WriteLine("Método da classe B");
            }
      }
      class C : A   // A classe C é derivada da classe A
      {
          public void Apresentar()
          {
              Console.WriteLine("Método da Classe C");
          }
      }  

3- Multinível

Quando uma classe é derivada de outra classe derivada, esse tipo de herança é chamado de herança de vários níveis.

      class A
      {
          public void Exibir()
          {
                Console.WriteLine("Método da classe A");
          }
      }
      class B : A   // A classe B deriva da classe A
      {
            public void Mostrar()
            {
                Console.WriteLine("Método da classe B");
            }
      }
      class C : B   // A classe C é derivada da classe B
      {
          public void Apresentar()
          {
              Console.WriteLine("Método da Classe C");
          }
      }  
 class Program
 {
        static void Main(string[] args)                     
        {
            C obj = new C();
            obj.Exibir();
            obj.Mostrar();
            obj.Apresentar();
            Console.ReadKey();
        }        
}
 

4- Múltipla (interface)

A linguagem C# não suporta herança múltipla de classes.

Para superar esse problema, podemos usar interfaces onde uma classe pode implementar mais de uma interface ou de uma classe e de uma ou mais de uma interface.

class Forma
{
        public void setLado(int s)
        {
            lado = s;
        }
        protected int lado;
}
interface ICusto
{
        int getCusto(int area);
}
class Quadrado : Forma, ICusto
{
        public int getArea()
        {
            return (lado * lado);
        }
        public int getCusto(int area)
        {
            return area * 10;
        }
}
 
class Program
 {
        static void Main(string[] args)
        {
            Quadrado qd = new Quadrado();
            int area;
            qd.setLado(5);
            area = qd.getArea();
            // Imprime a área e custo 
            Console.WriteLine("A area é: {0}", qd.getArea());
            Console.WriteLine("O custo é: {0}", qd.getCusto(area));
            Console.ReadKey();
        }
 }
 

Existem outras formas de implementar a herança múltipla e ainda de simular este tipo de herança mas veremos esse assunto em outro artigo.

E estamos conversados...

"Naquele tempo, respondendo Jesus, disse: Graças te dou, ó Pai, Senhor do céu e da terra, que ocultaste estas coisas aos sábios e entendidos, e as revelaste aos pequeninos."
Mateus 11:25

Referências:


José Carlos Macoratti