Qual é a diferença básica entre classe abstrata e interface?

Referência:

Decodejava.com apresentando tutorial Java simples e fácil.

Classe abstrata

é uma classe declarada com o

resumo

palavra-chave Ao contrário de uma classe java simples, uma classe abstrata pode não apenas conter

métodos definidos regularmente

mas também pode conter

métodos abstratos

ou uma mistura de

métodos regulares e abstratos

.

Para mais classes Abstratas, métodos abstratos e suas várias regras em exemplos fáceis de código

, você pode ler

Classe abstrata de Java- Decodejava.com

Interface

é um

Classe 100% abstrata

que é declarado com a palavra-chave

interface

. Métodos de interface são implicitamente

abstrato e

não pode ter

quaisquer métodos definidos regularmente.

Para mais informações sobre interface e várias regras em exemplos fáceis de código,

você pode ler

Interface em Java

Boa sorte!

Classe abstrata:

  • Uma classe abstrata seria declarada usando a palavra-chave 'abstract'.
  • A criação do objeto não é possível de uma classe abstrata.
  • Pode conter membros de dados, métodos, métodos abstratos, construtores.
  • Os membros dos dados não podem ser abstratos.
  • Ele deve ser herdado pela subclasse (s) usando a palavra-chave 'extends'.
  • A subclasse deve implementar todo e qualquer método abstrato declarado na Super Class. Caso contrário, a subclasse atuaria como uma classe abstrata que precisa ser estendida ainda mais.

Interface:

  • Criado usando a palavra-chave 'interface'.
  • Todos os métodos seriam abstratos por padrão.
  • As interfaces podem ser implementadas por subclasse usando 'implementos'.
  • Todos os métodos devem ser implementados na subclasse (classe concreta).

Consulte Mais informação…

Página inicial - Blogs tudo em um

Java Conceito de Programação Orientada a Objetos (OOPs) - Blogs tudo em um

Existem várias diferenças:

  • Variáveis ​​finais: as variáveis ​​declaradas em uma interface Java são, por padrão, finais. Uma classe abstrata pode conter variáveis ​​não finais
  • Tipo de variáveis: A classe abstrata pode ter variáveis ​​finais, não finais, estáticas e não estáticas. A interface possui apenas variáveis ​​estáticas e finais
  • Herança versus Abstração: Uma interface Java pode ser implementada usando a palavra-chave "implementa" e a classe abstrata pode ser estendida usando a palavra-chave "extends"
  • Implementação múltipla: uma interface pode estender apenas outra interface Java, uma classe abstrata pode estender outra classe Java e implementar várias interfaces Java
  • Tipo de métodos: A interface pode ter apenas métodos abstratos. A classe abstrata pode ter métodos abstratos e não abstratos. No Java 8, ele pode ter métodos padrão e estáticos também

A principal diferença é a finalidade para a qual eles são usados.

O escopo de uma classe abstrata geralmente está em um único aplicativo ou processo. É usado para abstrair propriedades e métodos comuns. Como ele também pode ter implementado métodos, há uma certa quantidade de código reutilizável para seus descendentes.

Pelo contrário, uma interface como o nome indica é usada para criar uma interface entre dois processos diferentes. Por exemplo, pode-se criar uma interface entre os processos do cliente e do servidor. O cliente pode implementar a interface que o força a implementar os métodos de uma certa maneira esperada. Em geral, as interfaces possuem apenas métodos não implementados, oferecendo muito pouco em termos de reutilização de código e esse também não é o objetivo.

Classe abstrata pode definir construtor. Eles são mais estruturados e podem ter um estado associado a eles.

As interfaces ainda não podem ter nenhum estado. As interfaces ainda não podem ter nenhum método final, o que significa que qualquer implementação pode substituir todos os seus métodos padrão. E as interfaces ainda não podem ter nenhum construtor.

Você ainda pode implementar várias interfaces, mesmo se elas tiverem métodos padrão com a mesma assinatura. Você não pode estender várias classes (abstrata ou não).

1. uma classe pode herdar de apenas uma outra classe, mas pode implementar muitas interfaces

2. uma interface pode não ter nenhum campo, esperar constantes definidoras, enquanto uma classe abstrata pode

3. uma classe abstrata pode definir um construtor, enquanto uma interface não pode

Os métodos padrão são restritos aos parâmetros de entrada e chamadas de método. Eles são apátridas por natureza. Uma classe abstrata pode ter estado. Portanto, da perspectiva do design, devemos usar classes abstratas sempre que precisar de reutilização de código.

As interfaces são perfeitas para seguir o princípio "Programa para interface e não implementação".