Curso de C#: Lição 8: Herança de Classes

Esta lição ensina sobre Herança em C#. Nossos objetivos são os seguintes: Implementar base classes. Aplicar derivadas classes. Inicializar base classes derivadas de classes. Aprenda a chamada base classe membros. Saiba como base para esconder classe membros.

Por | @oficinadanet Programação
Esta lição ensina sobre Herança C #. Nossos objetivos são os seguintes:

* Implementar base classes.
* Aplicar derivadas classes.
* Inicializar base classes derivadas de classes.
* Aprenda a chamada base classe membros.
* Saiba como base para esconder classe membros.

Hereditariedade é um dos principais conceitos de programação orientada a objeto. Ele permite a você reutilizar código existente. Através de emprego eficaz de reutilizar, você pode economizar tempo em sua programação.

Listagem 8-1. Herança: BaseClass.cs
 using System;

public class ParentClass
{
    public ParentClass()
    {
        Console.WriteLine("Parent Constructor.");
    }

    public void print()
    {
        Console.WriteLine("I'm a Parent Class.");
    }
}

public class ChildClass : ParentClass
{
    public ChildClass()
    {
        Console.WriteLine("Child Constructor.");
    }

    public static void Main()
    {
        ChildClass child = new ChildClass();

        child.print();
    }
}

Saída:
Parent Constructor.
Child Constructor.
I'm a Parent Class.

Listagem 8-1 mostra duas classes. A primeira classe é chamado ParentClass e os principais classe é chamado ChildClass. O que queremos fazer é criar uma criança turma, usando o código existente desde ParentClass.

Primeiro temos de declarar a nossa intenção de utilizar ParentClass como base a classe de ChildClass. Isso é realizado através da ChildClass declaração pública classe ChildClass: ParentClass. A classe base é especificado, adicionando uma cólon, ":", após a classe derivada identificador e, em seguida, especificando a base class nome.

Nota: C # suporta única classe herança apenas. Portanto, você pode especificar somente uma base de classe para herdar. No entanto, ele permite que múltiplos interface herança, de um assunto mais tarde cobertos de aula.

ChildClass tem exactamente as mesmas capacidades como ParentClass. Devido a isto, pode-se dizer também ChildClass "é" uma ParentClass. Isso é mostrado na Main () método de ChildClass print () quando o método for chamado. ChildClass não tem o seu próprio método print (), por isso ele usa o método ParentClass print (). Você pode ver os resultados da 3 ª linha de produção.

Base classes são automaticamente instanciado antes derivados classes. Observe a saída de Listing 8-1. O construtor ParentClass executado antes da ChildClass construtor.

Listagem 8-2. Comunicação da classe derivada com a classe base: BaseTalk.cs
using System;
public class Parent
{
    string parentString;
    public Parent()
    {
        Console.WriteLine("Parent Constructor.");
    }

    public Parent(string myString)
    {
        parentString = myString;
        Console.WriteLine(parentString);
    }

    public void print()
    {
        Console.WriteLine("I'm a Parent Class.");
    }
}

public class Child : Parent
{
    public Child() : base("From Derived")
    {
        Console.WriteLine("Child Constructor.");
    }

    public new void print()
    {
        base.print();
        Console.WriteLine("I'm a Child Class.");
    }

    public static void Main()
    {
        Child child = new Child();
        child.print();
        ((Parent)child).print();
    }
}


Saída:
From Derived
Child Constructor.
I'm a Parent Class.
I'm a Child Class.
I'm a Parent Class.

Classes Derivadas podem se comunicar com base classes durante a instanciação. Listagem 8-2 mostra como isto é feito na criança construtor declaração. Os dois pontos, ":", ea palavra-chave base chamada a classe base construtor correspondência com o parâmetro lista.Se o código não tinha anexado base ( "De Provém"), para os derivados construtor, o código teria automaticamente chamados Parent (). A primeira linha de produção mostra a classe base construtor seja chamado com a string "De derivados".

Às vezes você pode querer criar sua própria implementação de um método que existe numa base class. A classe Child faz isso por declarar o seu próprio método print (). A classe Child print () método esconde a impressão Parent () método. A classe Pai print () método não será chamado, a não ser que fazemos algo de especial para ter certeza de que ele é chamado.

Dentro da Child print () método, que explicitamente chamada a impressão Parent () método. Isto é feito pelo método prefixing o nome de "base"..Usando a base palavra-chave, você pode acessar qualquer base de uma classe pública ou protegidos classe membros. A saída da Criança print () método está na saída linhas 3 e 4.

Outra forma de acesso à base classe membros é através de um cast explícito. Isto é feito na última declaração da Criança classe principal () método. Lembre-se de que um derivado classe é uma especialização de sua classe base. Este facto permite-nos realizar um elenco sobre o derivado classe, tornando-se uma instância de sua classe base. A última linha de produção de Listagem 8-2 mostra a impressão Parent () método foi efectivamente executado.

Aviso sobre o novo modificador da classe Child print () método. Isso permite que esse método para ocultar o Pai classe print () método e explicitamente, a sua intenção de que não queremos polimorfismo de ocorrer. Sem o novo modificador, o compilador irá produzir um alerta para chamar a atenção para este facto. Veja a próxima lição para uma discussão detalhada de polimorfismo.

Resumo


Em resumo, você sabe como criar um derivado / base class relacionamento. Você pode controlar instanciação de sua base e classe chamada seus métodos, quer implícita ou explicitamente. Você também compreender que um derivado classe é uma especialização de sua classe base.

Matéria traduzida automaticamente de: http://www.csharp-station.com/Tutorials/Lesson08.aspx

Mais sobre: curso c sharp c#
Share Tweet
Recomendado
Comentários
Carregar comentários
Destaquesver tudo