Classe Abstrata vs Interface
Qual Escolher
A partir dos capítulos anteriores, pode-se perceber 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 o motivo disso.
Qual é a Diferença
Para começar, é necessário compreender as diferenças entre uma classe abstrata e uma interface. Vamos analisar a lista:
- Sintaxe:
abstract classao declarar uma classe abstrata einterfaceao declarar uma interface; - Palavra-chave de herança:
extendspara herdar de uma classe abstrata eimplementspara herdar de uma interface; - Nomes para subclasses: Uma subclasse de uma
abstract classé chamada de subclasse ou classe que herda, 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 classpode conter tanto métodos implementados quanto métodos abstratos. A partir do Java 8, interfaces também podem ter métodosdefault, que serão abordados 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
extendse, em seguida,implements. A sintaxe é a seguinte: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 que suas subclasses completem. 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!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you give examples of when to use an abstract class versus an interface?
What are the advantages of using interfaces over abstract classes?
Can you explain more about default methods in interfaces?
Awesome!
Completion rate improved to 4.76
Classe Abstrata vs Interface
Deslize para mostrar o menu
Qual Escolher
A partir dos capítulos anteriores, pode-se perceber 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 o motivo disso.
Qual é a Diferença
Para começar, é necessário compreender as diferenças entre uma classe abstrata e uma interface. Vamos analisar a lista:
- Sintaxe:
abstract classao declarar uma classe abstrata einterfaceao declarar uma interface; - Palavra-chave de herança:
extendspara herdar de uma classe abstrata eimplementspara herdar de uma interface; - Nomes para subclasses: Uma subclasse de uma
abstract classé chamada de subclasse ou classe que herda, 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 classpode conter tanto métodos implementados quanto métodos abstratos. A partir do Java 8, interfaces também podem ter métodosdefault, que serão abordados 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
extendse, em seguida,implements. A sintaxe é a seguinte: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 que suas subclasses completem. 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!