Las interfaces en ABAP son una forma de definir un conjunto de métodos que las clases pueden implementar. Son útiles para garantizar que diferentes clases compartan ciertos comportamientos sin necesidad de herencia.
En ABAP, las interfaces se definen con la palabra clave INTERFACE, seguida del nombre de la interfaz. Dentro de la interfaz, se declaran los métodos que las clases que la implementarán deberán definir. Por ejemplo:
INTERFACE z_mi_interfaz.
METHODS metodo1.
METHODS metodo2.
ENDINTERFACE.
Las clases que implementan esta interfaz deben proporcionar la lógica para metodo1y metodo2.
Para implementar una interfaz en ABAP, primero define una clase y usas la palabra clave INTERFACES seguida del nombre de la interfaz. Luego, proporcionas la implementación de cada método definido en la interfaz. Por ejemplo:
CLASS z_mi_clase DEFINITION.
PUBLIC SECTION.
INTERFACES z_mi_interfaz.
ENDCLASS.
CLASS z_mi_clase IMPLEMENTATION.
METHOD z_mi_interfaz~metodo1.
" Lógica del método 1
ENDMETHOD.
METHOD z_mi_interfaz~metodo2.
" Lógica del método 2
ENDMETHOD.
ENDCLASS.
Así, z_mi_claseimplementa los métodos de z_mi_interfaz.
Las referencias a interfaces se utilizan para definir variables que pueden apuntar a cualquier objeto que implemente esa interfaz. Esto permite un alto grado de flexibilidad y polimorfismo. Por ejemplo:
DATA: ref_interfaz TYPE REF TO z_mi_interfaz.
Esta variable ref_interfaz puede hacer referencia a cualquier objeto de una clase que implemente z_mi_interfaz. Luego, puedes instanciar un objeto y asignarlo:
ref_interfaz = NEW z_mi_clase( ).
Donde z_mi_clase es una clase que implementa z_mi_interfaz.
Para direccionar y asignar objetos usando referencias a interfaces en ABAP, primero creas una referencia del tipo de la interfaz, luego instancias el objeto y lo asignas a esa referencia.
DATA: ref_interfaz TYPE REF TO z_mi_interfaz.
" Instanciar un objeto de una clase que implementa la interfaz
ref_interfaz = NEW z_mi_clase( ).
" Llamar a un método de la interfaz
ref_interfaz->metodo1( ).
Así, ref_interfaz puede apuntar a cualquier objeto de una clase que implemente z_mi_interfaz y ejecute sus métodos.