Diferença entre Interface e Classe Abstrata em Java

Diferença chave: Interface ou protocolo é uma maneira comum que permite que objetos não relacionados se comuniquem uns com os outros. Representa um comportamento acordado que facilita a interação entre os dois objetos. Uma classe abstrata é uma classe de objetos que não podem ser instanciados ou configurados como uma instância de um objeto. Essa classe pode não ter nenhuma implementação ou pode ter uma implementação incompleta.

Java, C ++, C # são todas linguagens de programação complicadas que exigem um estudo detalhado e compreensão para poder trabalhar com. Há muitos métodos diferentes usados ​​nesses idiomas que decidem como o idioma funcionará. Interface e Abstract Class são dois conceitos confusos que fazem parte da OOP (programação orientada a objetos). Estes dois podem ser usados ​​individualmente ou em conjunto uns com os outros. Estes dois são completamente diferentes uns dos outros e são usados ​​em diferentes casos.

Java é uma linguagem de programação, que foi influenciada pela linguagem C. Ele deriva muito da sua sintaxe de C e C ++, no entanto, tem menos facilidades de baixo nível do que qualquer um. Java é uma linguagem de programação de uso geral projetada para ter menos dependências de implementação em comparação com os idiomas anteriores. É uma linguagem concorrente, baseada em classes e orientada a objetos.

Java foi desenvolvido por James Gosling na Sun Microsystems e foi lançado em 1995. Foi originalmente lançado como um componente central da plataforma Java da Sun Microsystems. A Sun já re-licenciou a maioria de suas tecnologias Java sob a Licença Pública Geral GNU. Isso significa que toda a tecnologia licenciada sob a GNU General Public License é de código aberto e geralmente está disponível gratuitamente. A Sun Microsystems acabou se fundindo à Oracle Corporation. A partir de 2012, o Java tornou-se uma das linguagens de programação mais populares para uso. Isso é especialmente verdadeiro para aplicativos da Web cliente-servidor. Muitos outros sistemas desenvolveram implementações alternativas das tecnologias da Sun, como o GNU Compiler for Java e o GNU Classpath.

Interface ou protocolo é uma maneira comum que permite que objetos não relacionados se comuniquem uns com os outros. Representa um comportamento acordado que facilita a interação entre os dois objetos. A interface contém a chave para as várias ações sendo implementadas e serve como um link entre os dois objetos diferentes. Se uma classe de objetos é exposta à interface, a classe teria que seguir o comportamento implementado pela interface. Comumente, as interfaces contêm apenas declarações constantes e assinaturas de métodos. Qualquer interface que implemente uma interface específica, deve aplicar todos os métodos mencionados na interface ou ser declarada como uma classe abstrata. Em Java, qualquer objeto pode ser definido como uma interface, se esse objeto é nulo ou contém uma classe na qual implementa essa interface específica. Pode-se implementar múltiplas interfaces para uma única classe em Java usando palavras-chave implementadas.

Uma classe abstrata é uma classe de objetos que não podem ser instanciados ou configurados como uma instância de um objeto. Essa classe pode não ter nenhuma implementação ou pode ter uma implementação incompleta. Ele também pode ter métodos abstratos ou propriedades que são compartilhadas por todas as subclasses. Em algumas linguagens de programação, tipos abstratos sem implementação são conhecidos como interfaces. Em Java, um tipo abstrato pode ser criado usando a palavra-chave 'abstract' na definição da classe. O objetivo de ter uma classe abstrata para colocar todos os métodos que não estão implementados na classe abstrata e deixá-la para a subclasse para determinar como implementar essas classes. Se uma classe tiver um único método abstrato, a classe deve ser declarada como uma classe abstrata, embora não seja necessário ter pelo menos um método único para declarar um resumo de classe.

Malliktalksjava.in lista as principais diferenças entre interface e resumo como:

  • A classe abstrata tem o construtor, mas a interface não.
  • Classes abstratas podem ter implementações para alguns de seus membros (Methods), mas a interface não pode ter implementação para nenhum de seus membros.
  • Classes abstratas devem ter subclasses que serão inúteis.
  • Interfaces devem ter implementações por outras classes que serão inúteis
  • Apenas uma interface pode estender outra interface, mas qualquer classe pode estender uma classe abstrata.
  • Todas as variáveis ​​nas interfaces são finais por padrão
  • Interfaces fornecem uma forma de herança múltipla. Uma classe pode estender apenas uma outra classe.
  • Interfaces são limitadas a métodos públicos e constantes sem implementação. Classes abstratas podem ter uma implementação parcial, partes protegidas, métodos estáticos, etc.
  • Uma classe pode implementar várias interfaces. Mas no caso da classe abstrata, uma classe pode estender apenas uma classe abstrata.
  • Interfaces são lentas, uma vez que requer uma indireção extra para encontrar o método correspondente na classe real. Classes abstratas são rápidas.
  • O modificador de acessibilidade (Público / Privado / interno) é permitido para a classe abstrata. Interface não permite modificador de acessibilidade
  • Uma classe abstrata pode conter métodos completos ou incompletos. Interfaces podem conter apenas a assinatura de um método, mas nenhum corpo. Assim, uma classe abstrata pode implementar métodos, mas uma interface não pode implementar métodos.
  • Uma classe abstrata pode conter campos, construtores ou destruidores e implementar propriedades. Uma interface não pode conter campos, construtores ou destruidores e tem apenas a assinatura da propriedade, mas não a implementação.
  • Vários modificadores de acesso, como abstrato, protegido, interno, público, virtual, etc., são úteis em Classes abstratas, mas não em interfaces.
  • Escopo abstrato é até classe derivada.
  • O escopo da interface é de qualquer nível de sua cadeia de herança.

As informações para a tabela são cortesia de codeproject.com e mindprod.com

Interface

Classe abstrata

Herança múltipla

Uma classe pode herdar várias interfaces.

Uma classe pode herdar apenas uma classe abstrata.

Implementação Padrão

Uma interface não pode fornecer nenhum código, apenas a assinatura.

Uma classe abstrata pode fornecer código padrão completo e / ou apenas os detalhes que devem ser substituídos.

Modificadores de Acesso

Uma interface não pode ter modificadores de acesso para subs, funções, propriedades, etc., tudo é assumido como público.

Uma classe abstrata pode conter modificadores de acesso para subs, funções e propriedades.

Núcleo vs. Periférico

Interfaces são usadas para definir as habilidades periféricas de uma classe. Em outras palavras, tanto Humano quanto Veículo podem herdar de uma interface IMovável.

Uma classe abstrata define a identidade central de uma classe e lá é usada para objetos do mesmo tipo.

Homogeneidade

Se várias implementações apenas compartilharem assinaturas de métodos, é melhor usar Interfaces.

Se várias implementações forem do mesmo tipo e usarem comportamento ou status comuns, é melhor usar a classe abstrata.

Rapidez

Requer mais tempo para encontrar o método real nas classes correspondentes.

Rápido

Adicionando funcionalidade

Se adicionarmos um novo método a uma interface, temos que rastrear todas as implementações da interface e definir a implementação do novo método.

Se adicionarmos um novo método a uma classe abstrata, temos a opção de fornecer implementação padrão e, portanto, todo o código existente pode funcionar corretamente.

Campos e Constantes

Nenhum campo pode ser definido em interfaces.

Uma classe abstrata pode ter campos e constantes definidos.

Intensidade

As declarações constantes em uma interface são todas presumidas public static final.

Código compartilhado pode ser adicionado em uma classe abstrata.

Constantes

Apenas constantes finais estáticas, podem usá-las sem qualificação em classes que implementam a interface.

Ambas as instâncias e constantes estáticas são possíveis. Ambos estático e código de iniciador de instância também são possíveis para calcular as constantes.

Conveniência de terceiros

Uma implementação de interface pode ser adicionada a qualquer classe de terceiros existente.

Uma classe de terceiros deve ser reescrita para estender somente da classe abstrata.

é-um vs. -able ou pode-fazer

Interfaces são freqüentemente usadas para descrever as habilidades periféricas de uma classe, não sua identidade central, por exemplo, uma classe Automobile pode implementar a interface Recyclable, que poderia se aplicar a muitos objetos totalmente não relacionados.

Uma classe abstrata define a identidade central de seus descendentes. As interfaces implementadas enumeram as coisas gerais que uma classe pode fazer, não as coisas que uma classe é.

Em um contexto Java, os usuários normalmente devem implementar a interface Runnable em vez de estender o Thread, porque eles não estão realmente interessados ​​em fornecer alguma nova funcionalidade Thread, eles normalmente só querem que algum código tenha a capacidade de executar independentemente. Eles querem criar algo que possa ser executado em um thread, não um novo tipo de thread. O semelhante é-um vs. tem-um debate surge quando você decide herdar ou delegar.

Plugar

O usuário pode gravar um novo módulo de substituição para uma interface que contenha não um código de barras em comum com as implementações existentes. Quando o usuário implementa a interface, eles começam do zero sem nenhuma implementação padrão. O usuário tem que obter ferramentas de outras classes; nada vem com a interface além de algumas constantes. Isso dá ao usuário liberdade para implementar um design interno radicalmente diferente.

O usuário deve usar a classe abstrata como é para a base de código, com toda a sua bagagem de acompanhante, boa ou ruim. O autor da classe abstrata impôs estrutura ao usuário.

Manutenção

Se o código do cliente fala apenas em termos de uma interface, você pode facilmente alterar a implementação concreta por trás dele, usando um método de fábrica.

Se o código do cliente fala apenas em termos de uma classe abstrata, você pode facilmente alterar a implementação concreta por trás dele, usando um método de fábrica.

Recomendado

Artigos Relacionados

  • diferença entre: Diferença entre o Dual Core e o Intel i3

    Diferença entre o Dual Core e o Intel i3

    Diferença chave: um processador dual-core é um tipo de unidade central de processamento (CPU) que possui dois núcleos de execução completos. Dual core tornou-se sinônimo de Intel Pentium Dual Core. Às vezes, também pode ser usado para se referir à linha Core 2 Duo da Intel. O Intel Core i3 é um tipo de processador dual-core. Na verda
  • diferença entre: Diferença entre sorriso e sorriso

    Diferença entre sorriso e sorriso

    Diferença chave: A principal diferença entre um sorriso e um sorriso é que um sorriso é quando o lábio se enrola para cima na esquina para expressar felicidade ou contentamento; Considerando que um sorriso é um tipo de sorriso que mostra presunção, presunção, ou quando se está satisfeito consigo mesmo. Muitas ve
  • diferença entre: Diferença entre bipolar e unipolar

    Diferença entre bipolar e unipolar

    Diferença chave: O transtorno bipolar é uma condição na qual as pessoas experimentam grandes mudanças de humor. Uma pessoa pode começar a ser feliz e depois ir rapidamente para ficar triste ou deprimida. A depressão unipolar é um transtorno mental que resulta em um paciente com episódios de baixo humor, baixa autoestima, perda de interesse, perda de prazer em atividades prazerosas. Distúrb
  • diferença entre: Diferença entre o Alcatel One Touch Idol Ultra e o iPhone 5

    Diferença entre o Alcatel One Touch Idol Ultra e o iPhone 5

    Diferença chave: O Alcatel One Touch Idol Ultra apresenta um ecrã táctil capacitivo HD AMOLED de 4, 65 polegadas com uma resolução de 720 x 1280 pixels. O telefone é alimentado pelo processador dual-core de 1, 2 GHz em um MediaTek MTK 6577 e 1 GB de RAM. O telefone tem uma largura de 6, 45 milímetros, o que levou a empresa a apresentá-lo como o smartphone mais fino do mercado. O iPho
  • diferença entre: Diferença entre ansiedade e estresse

    Diferença entre ansiedade e estresse

    Diferença chave: A ansiedade é um sentimento de medo, desconforto e preocupação. Pode estar enraizada em qualquer evento que faça alguém se sentir frustrado, irritado ou nervoso. O estresse é a resposta normal que uma pessoa tem a diferentes estímulos exigentes na natureza. O estresse é uma resposta comum que o corpo de uma pessoa exibe quando encontra situações diferentes, esmagadoras e exigentes. Ansiedade
  • diferença entre: Diferença entre um hotel de 4 e 5 estrelas

    Diferença entre um hotel de 4 e 5 estrelas

    Diferença chave: A principal diferença é a entrega do serviço - em hotéis de 4 estrelas, você deve perguntar e você receberá. No entanto, em hotéis de 5 estrelas, o serviço é prestado antes mesmo de o cliente pedir. Eles fornecem serviço de acordo com sua antecipação e o que eles acreditam que você precisa. Ao reservar u
  • diferença entre: Diferença entre ocultação de dados e abstração de dados

    Diferença entre ocultação de dados e abstração de dados

    Diferença chave: A ocultação de dados, também conhecida como ocultação de informações ou encapsulamento de dados em ciência da computação, é uma técnica de desenvolvimento de software usada em programação orientada a objetos (OOP). Ele é usado principalmente para ocultar detalhes de objetos internos, ou seja, as decisões de design em um programa de computador com maior probabilidade de alteração. Abstração é outro
  • diferença entre: Diferença entre Micromax A116 e Samsung Galaxy S3

    Diferença entre Micromax A116 e Samsung Galaxy S3

    Diferença chave: O Samsung Galaxy S3 é um smartphone multitoque com formato de ardósia que foi lançado em maio de 2012. O S3 possui uma tela Super AMOLED de 4, 8 HD com o corning gorilla glass 2. Ele é oferecido com o Android v4.0.4 (Ice Cream Sandwich ) e pode ser atualizado para 4.1.2 (Jelly Bean). O M
  • diferença entre: Diferença entre impressoras e scanners

    Diferença entre impressoras e scanners

    Diferença de teclas: A impressora é um dispositivo periférico que cria uma cópia sólida dos dados digitais representados na tela do computador. Impressoras podem ser usadas para conectar a um computador usando um USB ou sem fio. Os scanners, também conhecidos como scanners de imagem, são dispositivos periféricos usados ​​para transformar dados sólidos em dados digitais. Esses dispo

Escolha Do Editor

Diferença entre os números de roteamento ABA e ACH

Diferença de chave: O número de roteamento ABA é um número de nove dígitos que está localizado no cheque, também é conhecido como o Número de Trânsito de Roteamento (RTN). O Número de roteamento da ACH (Automated Clearing House) também é um número de nove dígitos, semelhante ao número de roteamento ABA. Em muitos caso