 VB.NET - Interfaces ou Classes Abstratas ?
 
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 Facebook
  
 Compartilhe no Twitter
 
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