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.
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");
}
}
|
|
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;
}
}
|
|
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: