¿Cuáles son las diferencias entre una interfaz y una clase abstracta?
– Herencia múltiple:
Podemos lograr múltiples herencias usando interfaces. Como ABAP no admite más de una clase Padre (Clase Superior), sólo puede tener una clase abstracta como clase Padre.
– Nueva funcionalidad:
Si añadimos un nuevo método en la interfaz, todas las clases que han implementado la interfaz tienen que implementar este método.
Si no implementamos el método, va a resultar un error en tiempo de ejecución RUN – Time error.
Para la clase abstracta, si añadimos un método no abstracto, no es necesario volver a implementar el método en cada clase heredada.
– Comportamiento por defecto:
Podemos tener un comportamiento predeterminado de un método en la clase abstracta. No podemos tener ningún comportamiento predeterminado en la interfaz, ya que sólo contiene la firma de los métodos.
– Visibilidad:
Todos los componentes de la interfaz son públicos por defecto.
Para la clase abstracta, podemos establecer la visibilidad de cada componente.