VB.NET - Interfaces ou Classes Abstratas ?
Quando você deve usar uma classe abstrata
?
Quando você deve usar uma Interface ? |
Quando você deve usar as duas ?
Quantas dúvidas ???
A seguir um pequeno roteiro para ajudá-lo a tomar a melhor decisão ....
O que é uma classe abstrata ?
Suponha que vamos criar várias classes que têm
métodos em comum e outros métodos funcionam diferente para cada classe. Uma
forma de fazer isso é usar as classes abstratas.
- As classes abstratas tem pelo menos um método abstrato, ou seja um método que
não tem corpo.
- Se um método tem uma classe abstrata ele deve ser declarado como um método
abstrato.
- Não podem ser criadas instâncias de classes abstratas.
- Ao criar uma classe usando uma classe abstrata como herança devem ser criados
os corpos para os métodos abstratos.
- Para criar uma classe usando uma classe abstrata como herança basta usar a
palavra-chave inherits , como em uma
classe normal
- Um método abstrato é identificado pelo modificador - MustOverride
- , a classe que possui este modificador não pode ser instanciada através
da palavra chave New.
Vamos a um exemplo:
O que são Interfaces ?
Interfaces podem ser entendidas como um tipo de classe abstrata em que todos métodos são abstratos.
- Em uma interface nenhum método tem corpo e
são implicitamente abstratas e publicas
- Assim como uma classe abstrata , uma interface não pode ser instanciada.
- Uma classe pode implementar mais de uma interface
- Uma interface não pode conter um construtor
- Ao criar uma classe usando uma interface devem ser feitos os corpos de todos
os métodos da interface, caso contrario deverá ser criada uma classe abstrata.
- Para implementar uma interface no VB.NET usamos o
modificador - Implements
.
Com os conceitos bem definidos vamos tentar uma tabela de consulta rápido para tomada de decisões:
Interfaces x Classes Abstratas | ||
Característica | Interface | Classe Abstrata |
Herança múltipla | Uma classe pode implementar diversas interfaces | Uma classe pode herdar somente uma classe |
Implementação Padrão | Uma interface não pode conter qualquer tipo de código, muito menos código padrão. | Uma classe abstrata pode fornecer código completo , código padrão ou ter apenas a declaração de seu esqueleto para ser posteriormente sobrescrita. |
Constantes | Suporte somente constantes do tipo estática. | Pode conter constantes estáticas e de instância. |
Componentes de terceiros | Uma implementação de uma interface pode ser incluída a qualquer classe de terceiros. | Uma classe de terceiros precisa ser reescrita para estender somente a partir da classe abstrata. |
Homogeneidade | Se todas as diversas implementações compartilham a assinatura do método então a interface funciona melhor. | Se as várias implementações são todas do tipo e compartilham um comportamento e status comum , então a classe abstrata funciona melhor. |
Manutenção | Se o código do seu cliente conversa somente em termos de uma interface, você pode facilmente alterar a implementação concreta usando um método factory. | idêntico |
Velocidade | Lento , requer trabalho extra para encontrar o método correspondente na classe atual. | Rápido |
Clareza | Todas as declarações de constantes em uma interface são presumidamente publicas ou estáticas. | Você pode por código compartilhado em uma classe abstrata. Você pode usar código para computar o valor inicial de suas constantes e variáveis de instância ou estáticas. |
Funcionalidades Adicionais | Se você incluir um novo método em uma interface você precisa ajustar todas as implementações da interface. | Se você incluir um novo método em uma classe abstrata você tem a opção de fornecer uma implementação padrão para ele. |
Você decide. !
Eu sei, é apenas .NET, mas eu gosto...
Tito 3:10 Ao homem faccioso, depois da primeira e segunda admoestação, evita-o,
Tito 3:11 sabendo que esse tal está pervertido, e vive pecando, e já por si mesmo está condenado.
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB.NET - Orientação a objetos : Conceitos básicos em 10 lições
.NET Framework : introdução é classes mais ... - Macoratti.net
C# - Classes Abstratas, Interface e Polimorfismo - Macoratti.net