Qual é a diferença entre uma interface e uma classe abstrata?

Published on 2026-08-26·v1.0

Bom, não é a mesma coisa.

Question

Qual é a diferença entre uma interface e uma classe abstrata?

Less Short Answer

Existem duas diferenças principais. Primeiro, uma classe abstrata tem um construtor, que é chamado para construir seu objeto final — isso não acontece com uma interface. Segundo, uma classe abstrata pode carregar um estado mutável, o que também não é o caso de uma interface.

java
abstract class Vehicle { private int speed; // estado mutável protected Vehicle(int speed) { // construtor this.speed = speed; } } interface Movable { // sem construtor, sem estado mutável permitido }

A Word of Caution

Essa pergunta pode parecer uma pegadinha, porque você pode ter métodos estáticos e de instância tanto em classes abstratas quanto em interfaces. Esse é um recurso que foi adicionado às interfaces no Java 8, em 2014.

One Last Word

Agora você deve estar se perguntando: quando devemos usar classes abstratas ou interfaces? Por padrão, prefira interfaces. Por quê? Bom, isso fica para uma próxima vez.

References