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 abstrata | Interface |
---|---|
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