Qual é a diferença entre Abstract Class e Interface em Java?



Este artigo o ajudará a entender a diferença fundamental entre classe abstrata e interface em java com a ajuda de um programa de exemplo.

Classes abstratas e interfaces são os dois principais blocos de construçãodo . Embora ambos sejam usados ​​principalmente para abstração, eles são muito diferentes um do outro e não podem ser usados ​​alternadamente. Neste artigo, vamos descobrir qual é a diferença entre classe abstrata e interface em Java.

Os tópicos discutidos neste artigo são os seguintes:





transformação ativa e passiva em informática

Para entender as diferenças entre classe abstrata e interface em , você precisa saber o que é uma classe abstrata e o que é uma interface. Então, vamos começar discutindo o que são.

O que é classe abstrata em Java?

Em qualquer linguagem de programação, abstração significa ocultar os detalhes irrelevantes do usuário para se concentrar apenas nos detalhes essenciais para aumentar a eficiência, reduzindo assim a complexidade. Em Java, a abstração é alcançada usando classes abstratas . Uma classe abstrata captura características comuns de subclasses e pode ou não conter qualquer método abstrato. Não pode ser instanciado, mas só pode ser usado como uma superclasse por suas subclasses. Aqui está um programa de exemplo que demonstra a classe abstrata:



Nota: A método abstrato , é um método que não está implementado no local e adicionaincompletude para classe .

pacote MyPackage // classe abstrata classe abstrata Animal {String AnimalName = '' Animal (nome da string) {this.AnimalName = nome} // declara métodos não abstratos // tem implementação padrão public void BasicInfo (detalhes da string) {System. out.println (this.AnimalName + '' + details)} // métodos abstratos que serão // implementados por sua (s) subclasse (s) abstract public void habitat () abstract public void respiration ()} class Terrestrial extends Animal {// construtor Terrestre (nome da string) {super (nome)} @Override public void habitat () {System.out.println ('deixar em terra e')} @Override public void respiration () {System.out.println ('respire através dos pulmões ou traquéia. ')}} classe Aquatic extends Animal {// construtor Aquatic (String name) {super (name)} @Override public void habitat () {System.out.println (' Ele sai na água e ') } @Override public void respiration () {System.out.println ('respire through gills or their skin.')}} Class AbstractClassDemo {public static voi d main (String [] args) {// criando o objeto da classe Terrestrial // e usando a referência da classe Animal. Animal object1 = new Terrestrial ('Humans') object1.BasicInfo ('são seres terrestres, eles') object1.habitat () object1.respiration () System.out.println ('') // criando os objetos da classe círculo Animal object2 = new Aquatic ('Fishes') object2.BasicInfo ('são seres aquáticos, eles') object2.habitat () object2.respiration ()}}

Resultado

Os humanos são seres terrestres, eles partem em terra e respiram pelos pulmões ou traquéia. Os peixes são seres aquáticos, eles saem na água e respiram pelas guelras ou pela pele.

o Informação básica () é um método compartilhado por Terrestre e Aquático Aulas. Desde a Classe animal não pode ser iniciado, estamos criando os objetos de Terrestre e Aquático classes para fins de programação. Em seguida, temos interfaces.



Interface em Java

Outra forma de alcançar abstração em Java é usando interfaces .Uma interface é uma coleção de métodos abstratos, ela não possui nenhum , ao contrário de uma classe abstrata. Mas, ao contrário da classe abstrata, uma interface fornece abstração completa em Java. Ele pode ter métodos e variáveis ​​como uma classe. No entanto, os métodos declarados em uma interface são abstratos por padrão.Aqui está um demonstrando a classe abstrata:

package MyPackage interface Animals {// métodos abstratos void habitat () void respiration ()} classe TerrestrialA implementa Animals {String AnimalName = '' // construtor TerrestrialA (String name) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave on land and')} @Override public void respiration () {System.out.println ('respire through lungs or trachea.')}} Class AquaticA implementa Animals {String AnimalName = '' // construtor AquaticA (String name) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave in water and')} @Override public void respiration () {System.out.println ('respire through gills or their skin.')}} Class JavaInterfaceDemo {public static void main (String [] args) {// criando o objeto da classe Terrestrial // e usando a referência da classe Animal . Animais objeto1 = novo TerrestreA ('Humanos') objeto1.habitat () objeto1.respiração () System.out.println ('') // criando os Objetos da classe círculo Animais objeto2 = novo AquáticoA ('Peixes') objeto2.habitat () object2.respiration ()}}

Resultado

Os humanos partem para a terra e respiram pelos pulmões ou traquéia. Os peixes saem na água e respiram pelas guelras ou pela pele.

Se você não tiver nenhum código comum entre seus Aulas , então você pode ir para a interface. Uma interface é mais como um blueprint de uma classe, uma vez que não possui métodos não abstratos.

Pelo conteúdo acima, você deve ter notado a principal diferença entre classe abstrata e interface em . Que é, ao contrário da classe abstrata, uma interface fornece abstração em Java. Agora, vamos listar outras diferenças.

Classe abstrata vs interface

A tabela abaixo lista as principais diferenças entre classe abstrata e interface.

Parâmetro Classe Abstrata Interface

Implementação de Método Padrão

Pode ter implementação de método padrão

Interfaces fornecem abstração pura e não podem ter implementação

Variáveis

Pode conter variáveis ​​não finais.

Variáveis ​​declaradas em uma interface são por padrão final

Palavra-chave usada

Uma classe abstrata pode ser estendida usando a palavra-chave “extends

A interface deve ser implementada usando palavras-chave ïmplements

Modificadores de acesso

latatêm modificador público, protegido, privado e padrão

Os métodos de interface são públicos por padrão. você não pode usar nenhum outro modificador de acesso com ele

Velocidade de Implementação

É mais rápido que a interface

Uma interface é um pouco mais lenta e requer indireção extra

Aula Normal

Ele pode estender apenas uma classe abstrata

Pode implementar várias interfaces

Construtores

Uma classe abstrata pode ter construtores

Uma interface não pode ter construtores

converter string para data em java

Herança Múltipla

Uma classe abstrata pode estender outra classe e pode implementar várias interfaces Java

A interface pode estender outra interface Java apenas

Bem, agora você conhece as principais diferenças entre classe abstrata e interface em Java. Mas, como você decide quando usar qual desses dois?

Quando usar a classe abstrata e quando usar a interface?

Considere o uso de classes abstratas nos seguintes casos:

  • Se você tem algumas classes relacionadas que precisam compartilhar o mesmas linhas de código
  • Quando você deseja definir o campos não estáticos ou não finais
  • Quando houvermétodos ou camposou requer modificadores de acesso diferente de público (como protegido e privado)

Considere o uso de interfaces nos seguintes casos:

  • Quando você deseja alcançar abstração pura
  • Se você quiser empregar múltiplo , ou seja,implementar mais de uma interface
  • Quando você deseja especificar o comportamento de um determinado tipo de dados, mas não se preocupa com quem implementa seu comportamento.

Isso nos leva ao final deste artigo. Cobri uma das perguntas mais frequentes sobre Java no Interview, que é a diferença entre classe abstrata e interface em Java.

Pratique o máximo possível e reverta sua experiência.

Confira o pela Edureka, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo. Estamos aqui para ajudá-lo em todas as etapas de sua jornada, para nos tornarmos uma pergunta além dessa entrevista java, nós criamos um currículo que é projetado para estudantes e profissionais que desejam ser um desenvolvedor Java.

Tem alguma questão para nós? Mencione-o na seção de comentários desta ‘interface do Java Map’ artigo e entraremos em contato com você o mais breve possível.