O que é interface?
A interface é um projeto que pode ser usado para implementar uma classe. A interface não contém nenhum método concreto (métodos que possuem código). Todos os métodos de uma interface são métodos abstratos.
Uma interface não pode ser instanciada. No entanto, as classes que implementam interfaces podem ser instanciadas. As interfaces nunca contêm variáveis de instância, mas podem conter variáveis finais públicas estáticas (ou seja, variáveis de classe constantes)
O que é classe abstrata?
Uma classe que possui a palavra-chave abstract em sua declaração é chamada de classe abstrata. As classes abstratas devem ter pelo menos um método abstrato. , ou seja, métodos sem corpo. Ele pode ter vários métodos concretos.
As classes abstratas permitem que você crie projetos para classes concretas. Mas a classe herdada deve implementar o método abstrato.
Classes abstratas não podem ser instanciadas.
Razões importantes para usar interfaces
- As interfaces são usadas para obter abstração.
- Projetado para suportar resolução de método dinâmico em tempo de execução
- Ajuda a obter um acoplamento fraco.
- Permite que você separe a definição de um método da hierarquia de herança
Razões importantes para usar a classe abstrata
- As classes abstratas oferecem funcionalidade padrão para as subclasses.
- Fornece um modelo para futuras classes específicas
- Ajuda a definir uma interface comum para suas subclasses
- A classe abstrata permite a reutilização do código.
Interface vs. Classe Abstrata
Uma classe abstrata permite que você crie uma funcionalidade que as subclasses podem implementar ou substituir, enquanto uma interface permite apenas que você defina a funcionalidade, mas não a implementa. Uma classe pode estender apenas uma classe abstrata, enquanto uma classe pode implementar várias interfaces.
Parâmetros | Interface | Aula abstrata |
---|---|---|
Velocidade | Lento | Rápido |
Múltiplas Heranças | Implementar várias interfaces | Apenas uma classe abstrata |
Estrutura | Métodos abstratos | Métodos abstratos e concretos |
Quando usar | Melhoria futura | Para evitar a independência |
Herança / Implementação | Uma classe pode implementar várias interfaces | A classe pode herdar apenas uma classe abstrata |
Implementação Padrão | Ao adicionar coisas novas à interface, é um pesadelo encontrar todos os implementadores e implementar coisas recém-definidas. | No caso de Abstract Class, você pode tirar vantagem da implementação padrão. |
Modificadores de acesso | A interface não possui modificadores de acesso. Tudo definido dentro da interface é assumido como modificador público. | A classe abstrata pode ter um modificador de acesso. |
Quando usar | É melhor usar a interface quando várias implementações compartilham apenas a assinatura do método. Hierarquia polimórfica de tipos de valor. | Deve ser usado quando várias implementações do mesmo tipo compartilham um comportamento comum. |
Campos de dados | a interface não pode conter campos de dados. | a classe pode ter campos de dados. |
Padrão de herança múltipla | Uma classe pode implementar várias interfaces. | Uma classe herda apenas uma classe abstrata. |
Implementação | Uma interface é abstrata, de modo que não pode fornecer nenhum código. | Uma classe abstrata pode fornecer um código padrão completo que deve ser substituído. |
Uso de modificadores de acesso | Você não pode usar modificadores de acesso para o método, propriedades, etc. | Você pode usar uma classe abstrata que contém modificadores de acesso. |
Uso | As interfaces ajudam a definir as habilidades periféricas de uma classe. | Uma classe abstrata define a identidade de uma classe. |
Campos definidos | Nenhum campo pode ser definido | Uma classe abstrata permite que você defina campos e constantes |
Herança | Uma interface pode herdar várias interfaces, mas não pode herdar uma classe. | Uma classe abstrata pode herdar uma classe e várias interfaces. |
Construtor ou destruidores | Uma interface não pode declarar construtores ou destruidores. | Uma classe abstrata pode declarar construtores e destruidores. |
Limite de extensões | Ele pode estender qualquer número de interfaces. | Ele pode estender apenas uma classe ou uma classe abstrata por vez. |
Palavra-chave abstrata | Em uma palavra-chave de interface abstrata, é opcional para declarar um método como abstrato. | Em uma classe abstrata, a palavra-chave abstract é obrigatória para declarar um método como abstrato. |
Tipo de aula | Uma interface pode ter apenas métodos abstratos públicos. | Uma classe abstrata possui métodos abstratos protegidos e públicos. |
Código de amostra para Interface e classe abstrata em Java
A seguir está o código de amostra para criar uma interface e classe abstrata em Java
Sintaxe da interface
interface name{//methods}
Exemplo de interface Java:
interface Pet {public void test();}class Dog implements Pet {public void test() {System.out.println("Interface Method Implemented");}public static void main(String args[]) {Pet p = new Dog();p.test();}}
Sintaxe de classe abstrata
abstract class name{// code}
Exemplo de classe abstrata:
abstract class Shape {int b = 20;abstract public void calculateArea();}public class Rectangle extends Shape {public static void main(String args[]) {Rectangle obj = new Rectangle();obj.b = 200;obj.calculateArea();}public void calculateArea() {System.out.println("Area is " + (obj.b * obj.b));}}