Artigo: 307205 - Última revisão: sexta-feira, 1 de Agosto de 2008 - Revisão: 3.0

A utilização da herança no Visual C#

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Este artigo passo a passo mostra como utilizar herança no Visual C#.

Herança é um conceito importante orientada para objectos. Permite-lhe criar uma hierarquia de classes relacionadas e reutilizar funcionalidade definida em classes existentes.

Os exemplos seguintes, definirá uma classe base que contém campos e métodos para uma conta bancária genérico. Em seguida, definirá uma classe derivada que representa um determinado tipo de conta bancária. Classe derivada irá herdar os membros da classe base, substituir membros seleccionados e adicionar novos membros para o novo tipo de conta.

Requisitos

Conhecimento prévio necessário:
  • Sintaxe de C#
  • Conceitos orientada para objectos

Criar uma nova aplicação de consola

  1. Inicie o Visual Studio e crie um novo C# consola aplicação projecto denominado UseInheritance .
  2. Guarde o projecto.

Criar uma classe base abstract

  1. No Solution Explorer, mude para a vista de classe (se não conseguir vê-lo, clique em Ver classe no menu Ver ). Clique com o botão direito do rato no projecto UseInheritance, aponte para Adicionar e, em seguida, clique em classe .

    Nota No Visual C# .NET 2003, aponte para Adicionar e, em seguida, clique em Adicionar classe .
  2. Na caixa de diálogo Adicionar novo item , escreva um nome de classe da conta e, em seguida, clique em Adicionar .

    A classe de conta é apresentada. Repare a palavra-chave. Adicione os modificadores públicos e abstractos à classe para é semelhante ao seguinte.
    public abstract class Account 
    {
       
    
    }

Escrever código para a classe base

  1. Na janela Vista de código, somar dois campos para a classe conta para representar o saldo da conta e o nome do titular de conta:
    private string name;        // Only accessible in base class
    protected double balance;   // Accessible in base class and derived class
  2. Modificar o construtor do seguinte modo para inicializar estes campos:
    public Account(string nm, double bal)
    {
       this.name = nm;
       this.balance = bal;
    
    }
  3. Adicione os seguintes métodos à classe. A palavra-chave virtual significa que estes métodos podem ser substituídos em classes derivadas:
    public virtual void Credit(double amount)
    {
       this.balance += amount;
    }
    
    public virtual void Debit(double amount)
    {
       this.balance -= amount;
    }
    
    public virtual void Display()
    {
       Console.WriteLine("Name={0}, balance={1}", this.name, this.balance);
    
    }
  4. Adicione o seguinte método à classe. Porque este método não está marcado como virtual, não pode ser substituída em classes derivadas. Este método proporciona a capacidade para alterar o nome do detentor da conta.
    public void ChangeName(string newName)
    {
       this.name = newName;
    
    }
  5. Adicione o seguinte método à classe. A palavra-chave abstracta significa que este método tem de ser substituído em classes derivadas:
    public abstract double CalculateBankCharge();

Criar uma classe derivada

  1. Na Vista de classe , clique com o botão direito do rato no projecto UseInheritance. No menu de atalho , seleccione Adicionar e clique em classes .
  2. Na caixa de diálogo Adicionar novo item , escreva SavingsAccount e, em seguida, clique em Adicionar .
  3. Visualizar o código para a classe SavingsAccount.
  4. Alterar a definição de classe SavingsAccount como se segue, isso SavingsAccount herda conta:
    public class SavingsAccount : Account
    {
       
    
    }

Escrever código para a classe derivada

  1. Adiciona um campo à classe SavingsAccount:
    private double minBalance;   // If the balance drops below minBalance, 
                                 // the bank will charge a fee on the account
  2. Modificar o Construtor de SavingsAccount inicializar os campos na classe base desta classe:
    public SavingsAccount(string nm, double bal, double min) 
       : base(nm, bal)           // Call base-class constructor first
    {
       minBalance = min;         // Then initialize fields in this class
    
    }
  3. Adicione os seguintes métodos à classe SavingsAccount. Estes métodos de substituem os métodos virtuais herdados da classe base:
    public override void Debit(double amount)
    {
       if (amount <= balance)    // Use balance, inherited from base class
          base.Debit(amount);    // Call Debit, inherited from base class 
    }
    public override void Display()
    {
       base.Display();          // Call Display, inherited from base class
       Console.WriteLine("$5 charge if balance goes below ${0}", minBalance);
    
    }
  4. Tem de substituir todos os métodos abstractos da classe base. Adicione o seguinte método à classe SavingsAccount:
    public override double CalculateBankCharge()
    {
       if (balance < minBalance)
          return 5.00;
       else
          return 0.00;
    
    }

Verifique se este Works

  1. Apresenta o código para Class1.cs na janela Vista de código.
  2. No método principal , crie um objecto SavingsAccount e apresentá-lo da seguinte forma:
    SavingsAccount sa = new SavingsAccount("Freda Smith", 100.00, 25);
    sa.Display();
  3. Adicione o seguinte código para chamar métodos públicos SavingsAccount ' ou ' conta:
    sa.Credit(100);
    sa.Debit(180);
    sa.ChangeName("Freda Jones");
    sa.Display();
    Console.WriteLine("Bank charge: ${0}",  sa.CalculateBankCharge());
  4. Compilar a aplicação.
  5. Definir um ponto de interrupção no início do método principal e iniciar a aplicação no depurador. Passo para cada instrução e observe os métodos são chamados durante a aplicação. A aplicação apresenta as seguintes informações na consola:
    Name=Freda Smith, balance=100
    $5 charge if balance goes below $25
    Name=Freda Jones, balance=20
    $5 charge if balance goes below $25
    Bank charge: $5

A informação contida neste artigo aplica-se a:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2003 Standard Edition
Palavras-chave: 
kbmt kbsweptvs2008 kbhowtomaster KB307205 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 307205  (http://support.microsoft.com/kb/307205/en-us/ )