logo

Diferença entre classe abstrata e interface

Classe abstrata e interface são usadas para obter abstração onde podemos declarar os métodos abstratos. Classe abstrata e interface não podem ser instanciadas.

convenção de nomes java

Mas existem muitas diferenças entre a classe abstrata e a interface fornecidas a seguir.

Classe abstrataInterface
1) Classe abstrata pode tem abstrato e não abstrato métodos.Interface pode ter apenas abstrato métodos. Desde o Java 8, ele pode ter métodos padrão e estáticos também.
2) Aula abstrata não suporta herança múltipla .Interface suporta herança múltipla .
3) Aula abstrata pode ter variáveis ​​finais, não finais, estáticas e não estáticas .Interface tem apenas variáveis ​​estáticas e finais .
4) Aula abstrata pode fornecer a implementação da interface .Interface não pode fornecer a implementação da classe abstrata .
5) O palavra-chave abstrata é usado para declarar uma classe abstrata.O palavra-chave de interface é usado para declarar interface.
6) Um classe abstrata pode estender outra classe Java e implementar múltiplas interfaces Java.Um interface pode estender apenas outra interface Java.
7) Um classe abstrata pode ser estendido usando a palavra-chave 'extends'.Um interface pode ser implementado usando a palavra-chave 'implementos'.
8) Para Java classe abstrata pode ter membros da classe como private, protected, etc.Os membros de uma interface Java são públicos por padrão.
9) Exemplo:
classe abstrata pública Forma{
público abstrato void draw();
}
Exemplo:
interface pública desenhável{
vazio sorteio();
}

Simplesmente, a classe abstrata atinge abstração parcial (0 a 100%), enquanto a interface atinge abstração total (100%).

como converter de string para int

Exemplo de classe abstrata e interface em Java

Vamos ver um exemplo simples onde estamos usando interface e classe abstrata.

 //Creating interface that has 4 methods interface A{ void a();//bydefault, public and abstract void b(); void c(); void d(); } //Creating abstract class that provides the implementation of one method of A interface abstract class B implements A{ public void c(){System.out.println('I am C');} } //Creating subclass of abstract class, now we need to provide the implementation of rest of the methods class M extends B{ public void a(){System.out.println('I am a');} public void b(){System.out.println('I am b');} public void d(){System.out.println('I am d');} } //Creating a test class that calls the methods of A interface class Test5{ public static void main(String args[]){ A a=new M(); a.a(); a.b(); a.c(); a.d(); }} 
Teste agora

Saída:

 I am a I am b I am c I am d