Fórum Duvidas sobre Interface e Classe Abstrata #3303
04/03/2009
0
Daniel Porfirio
Curtir tópico
+ 0Posts
04/03/2009
Luiz Maia
- 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(java) ou : (no seu caso .net) , 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 ao 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 . Seguem as comparações de prós e contras de ambas. 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. Caso ainda alguma dúvida persista, por favor me comunique. Abraços Att Luiz Maia
Gostei + 0
06/03/2009
Luiz Maia
Gostei + 0
06/03/2009
Daniel Porfirio
Gostei + 0
06/03/2009
Luiz Maia
Gostei + 0
09/03/2009
Luiz Maia
Gostei + 0
10/03/2009
Luiz Maia
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)