Qual é a diferença entre classe abstrata e interface em java

Qual é a diferença entre classe abstrata e interface em java

Java fornece várias maneiras de fornecer abstração de dados, como interfaces Java e classes abstratas de Java. Tanto a interface quanto a classe abstrata fornecem segurança, ocultando os detalhes da implementação interna e apenas mostrando/destacando os detalhes necessários. No entanto, existem inúmeras semelhanças e distinções entre classes abstratas e interfaces.

Esta postagem o ajudará nos aspectos listados abaixo das interfaces Java e classes abstratas:

  1. O que é uma interface Java.
  2. O que é uma classe abstrata Java.
  3. Comparação baseada em semelhanças.
  4. Java Abstract Class vs Java Interface.

Então, vamos começar!

O que é uma interface Java

É um modelo para uma classe que contém alguns métodos abstratos e variáveis ​​estáticas/finais. Em Java, as interfaces fornecem apenas a declaração de método, enquanto as classes de criança/implementada fornecem a definição do método.

O que é uma classe abstrata Java

Qualquer classe Java que tenha pelo menos um método resumo (apenas declaração do método) é conhecido como uma classe abstrata em Java.

Comparação baseada em semelhanças

Alguns aspectos importantes das interfaces Java e as classes abstratas estão listadas abaixo:

  • Em Java, não podemos criar o objeto/instância de ambas as interfaces ou classes abstratas.
  • Ambos fornecem apenas detalhes necessários para o usuário.
  • Ambos fornecem abstração.
  • Ambos podem ter métodos/funções abstratos.
  • Ambos ocultam as informações/detalhes da implementação dos usuários.

Java Abstract Class vs Java Interface

As palavras -chave "Resumo" e "Interface" são usadas em Java para criar/declarar as classes abstratas e interfaces, respectivamente.

Nas interfaces, todos os membros são considerados públicos por padrão; portanto, não há necessidade de especificar o modificador de acesso para os membros das interfaces. Enquanto em classes abstratas, não existe essa restrição e, portanto, qualquer modificador de acesso pode ser usado para os membros de classes abstratas, como público, protegido, etc.

A sintaxe básica de uma classe abstrata e uma interface é mostrada nos trechos abaixo de ditos:

Classe abstrata

classe abstrata public className
Public Resumo Void MethodName ();

Interface

interface pública interfacename
void MethodName ();

As interfaces devem ter todos os métodos abstratos, enquanto as classes abstratas podem ter métodos abstratos e não abstratos.

A interface pode ter apenas membros estáticos, enquanto classes abstratas podem ter membros estáticos e não estáticos.

As interfaces têm apenas membros "finais" (imutáveis), enquanto as classes abstratas podem ter membros finais e não finais.

As interfaces não têm nenhum construtor enquanto as classes abstratas têm construtores definidos ou padrão do usuário.

A herança múltipla pode ser alcançada usando interfaces, enquanto classes abstratas não suportam herança múltipla.

Em Java, a classe abstrata pode herdar outra classe e pode implementar muitas interfaces, por outro lado, uma interface Java pode estender apenas outra interface.

Exemplo

O exemplo abaixo, permitirá que você entenda como as interfaces e as classes abstratas funcionam em Java:

Interface FirstInterface
void methodOne ();
Void MethodTwo ();
Void MethodThree ();

Classe abstract AbstractClass implementos FirstInterface
public void MethodThree ()
Sistema.fora.println ("Método de implementação da classe abstrata");


classe NormalClass estende abstratoclass
public void methodOne ()
Sistema.fora.println ("implementando métodone");

public void MethodTwo ()
Sistema.fora.println ("Método de implementação");

public void MethodThree ()
Sistema.fora.println ("Método de implementação");


classe pública interfaceExample
public static void main (string [] args)
FirstInterface OBJ = new ClassThree ();
obj.MethodOne ();
obj.MethodTwo ();
obj.MethodThree ();

Neste exemplo, criamos uma interface “FirstInterface”, Uma classe abstrata “AbstractClass”, e mais duas classes java normais e realizou as seguintes funcionalidades:

  • O FirstInterface Contém três métodos abstratos.
  • O AbstractClass implementos FirstInterface e substitui o MethodThree ().
  • O NormalClass estende o AbstractClass e e substitui o MethodOne () e MethodTwo () de FirstInterface.

O InterfaceExample é a classe principal de onde criamos o método principal e invocamos todos os métodos de FirstInterface:

A saída verificou o funcionamento do programa Java acima do rumo.

Conclusão

Em Java, a abstração pode ser alcançada usando classes e interfaces abstratas, e ambos não podem ser instantados. No entanto, existem múltiplas distinções entre classes abstratas e interfaces. Por exemplo, as interfaces devem ter todos os métodos abstratos, enquanto as classes abstratas podem ter métodos abstratos e não abstratos; Usando interfaces, a herança múltipla pode ser alcançada enquanto classes abstratas não suportam herança múltipla, etc. Este post explicou vários aspectos de classes e interfaces abstratas com a ajuda de exemplos adequados.