Repaso
English
Java CoreBaseJV-09

¿Cuál es la principal diferencia entre una interface y una clase abstracta en Java?

Opciones

  1. No hay diferencia real, porque ambas definen métodos
  2. Una clase implementa muchas interfaces pero extiende una sola clase (Opción correcta)
  3. Las interfaces pueden tener campos de instancia; las clases abstractas no
  4. Las clases abstractas no pueden contener ningún método con código

Respuesta

Una clase puede implementar muchas interfaces pero extender solo una clase; una clase abstracta puede guardar estado (campos) y tener constructores

Por qué

Una interface es un contrato: una lista de métodos que una clase promete ofrecer (implements). Una clase puede implementar todas las interfaces que quiera.

Una clase abstracta es una clase a medio construir que puede tener campos, constructores y algunos métodos listos, más algunos métodos abstract por completar. Una clase solo puede hacer extend de UNA clase.

Desde Java 8 las interfaces también pueden tener métodos default con código, pero siguen sin poder guardar estado por objeto.

Recuerda

Muchas interfaces, una clase padre. Solo las clases abstractas guardan estado.

Términos clave

Practica esta pregunta en Repaso