Conteúdo do Curso
Java OOP
Java OOP
Classe Abstrata vs Interface
Qual escolher?
A partir dos capítulos anteriores, você pode ter notado que abstract classes
e interfaces
são bastante semelhantes. No entanto, existem diferenças entre elas. Indo direto ao ponto, pode-se dizer que, na prática, interfaces são frequentemente preferidas em relação às classes abstratas. Mas vamos entender por que isso acontece.
Qual é a diferença?
Para começar, precisamos compreender as diferenças entre uma classe abstrata e uma interface. Vamos analisar a lista:
Sintaxe:
abstract class
ao declarar uma classe abstrata einterface
ao declarar uma interface;Palavra-chave de herança:
extends
para herdar de uma classe abstrata eimplements
para herdar de uma interface;Nomes para subclasses: Uma subclasse de uma
abstract class
é chamada de subclasse ou classe herdada, enquanto uma subclasse de umainterface
é chamada de classe - implementação;Número de heranças: É possível herdar de apenas uma classe abstrata, enquanto é possível herdar de múltiplas interfaces;
Uma
abstract class
pode ter tanto métodos implementados quanto métodos abstratos. A partir do Java 8, interfaces também podem ter métodosdefault
, que serão discutidos posteriormente nesta seção;Métodos em uma classe abstrata podem ter qualquer modificador de acesso, enquanto, em interfaces, apenas o modificador de acesso
public
é permitido.
Nota
Também é possível herdar simultaneamente de uma classe abstrata e implementar uma interface. Primeiro, utiliza-se a palavra-chave
extends
e, em seguida,implements
. A sintaxe fica assim:class ClassName extends AbstractClass implements Interface {}
De forma simples, pense em uma classe abstrata como uma classe que fornece alguma funcionalidade e impõe certas regras, mas deixa algumas partes para suas subclasses completarem. Uma interface, por outro lado, é como uma lista de requisitos que uma classe precisa cumprir, especificando quais métodos ela deve possuir, sem fornecer nenhum código real.
Obrigado pelo seu feedback!