A herança é um importante conceito orientado a objetos. Ela permite que você crie uma hierarquia de classes relacionadas e reutilize a funcionalidade definida nas classes existentes.
Neste artigo, você aprenderá a usar uma herança no Visual Basic .NET. Você definirá uma classe base que contenha campos e métodos para uma conta bancária genérica. Em seguida, definirá uma classe derivada que represente um determinado tipo de conta bancária. A classe derivada herdará membros da classe base, substituirá membros seletivos e adicionará novos membros para esse tipo de conta.
Requisitos
Experiência anterior exigida:- Sintaxe do Visual Basic .NET
- Conceitos orientados a objetos
Criar um novo aplicativo de console
- Inicie o Visual Studio .NET e crie um novo projeto de aplicativo de console do Visual Basic chamado UseInheritance no computador local.
- Na caixa de diálogo Add New Item, digite Account.vb no campo Name. Clique em Open.
- O Visual Studio .NET exibirá o arquivo Account.vb. Examine esse código para se familiarizar com seu conteúdo.
- Salve o projeto.
Criar uma classe base abstrata
- No menu Project, clique em Add Class.
- Adicione o modificador MustInherit à classe Account, a fim de tornar Account uma classe abstrata:
Public MustInherit Class Account
End Class
Gravar código para a classe base
- Adicione dois campos à classe Account:
Private Name As String ' Only accessible in base class
Protected Balance As Double ' Accessible in base class and derived class
- Adicione um construtor para inicializar esses campos:
Public Sub New(ByVal Nm As String, ByVal Bal As Double)
Name = Nm
Balance = Bal
End Sub
- Adicione os seguintes métodos à classe. A palavra-chave Overridable significa que esses métodos podem ser substituídos nas classes derivadas:
Public Overridable Sub Credit(ByVal Amount As Double)
Balance += Amount
End Sub
Public Overridable Sub Debit(ByVal Amount As Double)
Balance -= Amount
End Sub
Public Overridable Sub Display()
Console.WriteLine("Name=" & Name & ", " & "Balance=" & Balance)
End Sub - Adicione o seguinte método à classe. Como este método não está marcado como Overridable, ele não pode ser substituído nas classes derivadas. Ele permite alterar o nome do correntista.
Public Sub ChangeName(ByVal newName As String)
Name = newName
End Sub
- Adicione o seguinte método à classe. A palavra-chave MustOverride significa que este método deve ser substituído nas classes derivadas:
Public MustOverride Function CalculateBankCharge() As Double
Criar uma classe derivada
- No menu Project, clique em Add Class.
- Na caixa de diálogo Add New Item, digite SavingsAccount.vb no campo Name. Clique em Open.
- O Visual Studio .NET exibirá o arquivo SavingsAccount.vb. Examine esse código para se familiarizar com seu conteúdo.
- Altere a definição de classe SavingsAccount da seguinte maneira, para que SavingsAccount seja herdada de Account (observe que a palavra-chave Inherits deverá aparecer em uma nova linha):
Public Class SavingsAccount
Inherits Account
End Class
Gravar código para a classe derivada
- Adicione um campo à classe SavingsAccount:
Private MinBalance As Double ' If the balance drops below MinBalance,
' the bank will charge a fee on the account - Adicione um construtor da seguinte maneira, a fim de inicializar os campos na classe base e nesta classe:
Public Sub New(ByVal Nm As String, _
ByVal Bal As Double, _
ByVal Min As Double)
MyBase.New(Nm, Bal) ' Call base-class constructor first
MinBalance = Min ' Then initialize fields in this class
End Sub - Adicione os seguintes métodos à classe SavingsAccount. Esses métodos substituem os métodos Overridable herdados da classe base:
Public Overrides Sub Debit(Amount As Double)
If Amount <= Balance Then ' Use balance, inherited from base class
MyBase.Debit(Amount) ' Call Debit, inherited from base class
End If
End Sub
Public Overrides Sub Display()
MyBase.Display() ' Call Display, inherited from base class
Console.WriteLine("$5 charge if balance goes below $" & MinBalance)
End Sub - Você deve substituir todos os métodos MustOverride na classe base. Adicione o seguinte método à classe SavingsAccount:
Public Overrides Function CalculateBankCharge() As Double
If Balance < MinBalance Then
Return 5.0
Else
Return 0.0
End If
End Function
Verificar se ele está funcionando
- Exiba o código do Module1.vb na janela de exibição de código.
- No método Main, crie um objeto SavingsAccount da seguinte maneira:
Dim sa As SavingsAccount = New SavingsAccount("Freda Smith", 100.00, 25)
sa.Display() - Adicione o seguinte código para chamar os métodos Public em SavingsAccount ou Account:
sa.Credit(100)
sa.Debit(180)
sa.ChangeName("Freda Jones")
sa.Display()
Console.WriteLine("Bank charge: $" & sa.CalculateBankCharge()) - Crie o aplicativo.
- No menu Debug, clique em Start Without Debugging para executar o aplicativo. Verifique se o aplicativo exibe estas informações no console:
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
- Execute o aplicativo novamente, mas desta vez use o depurador. Defina um ponto de interrupção no início do método Main e selecione Start no menu Debug. Depure cada instrução e observe quais métodos são chamados durante a aplicação.