
La adición FRIENDS y cómo se implementa: En cualquier lenguaje de programación orientado a objetos, el acceso a los componentes privados y protegidos, ya sea a los atributos o a los métodos, se encuentra prohibido.
Si alguien trata de acceder a ellos, el compilador generará un error de sintaxis.
A veces puede ser ventajoso dar acceso a los atributos protegidos y privados de otra clase. Esto puede lograrse utilizando la adición FRIENDS.
Friends: Adición que se agrega en una clase para permitir que otra clase pueda acceder a sus componentes protegidos y privados.
Esta adición se debe agregar en la clase cuyos atributos necesitan ser accedidos.
La nomenclatura para establecer la relación de "amistad" entre clases es la siguiente:
CLASS lcl_class1 DEFINITION FRIENDS lcl_class2
…
..
ENDCLASS.
La relación de amistad entre clases es una herramienta muy poderosa, la cual debe ser utilizada con mucha precaución. La clase que es "amiga" tiene acceso ilimitado a todos los componentes de la otra clase. Las relaciones de amistad son unilaterales; una clase que es amiga de otra clase no se convierte automáticamente en amiga de sus clases amigas. Si la clase que concede la amistad desea acceder a los componentes privados y protegidos de una clase amiga, esta última clase tendrá que otorgarse de una forma explícita la relación de amistad a la anterior. Si una clase es amiga de la clase raíz object, entonces gana que todas las clases en el mundo de los objetos ABAP serán sus amigas, por lo que es razonablemente seguro para una clase, ofrecer amistad a una clase final, es decir, a una clase que no posee subclase. Ya que es la única manera de especificar que solo esta clase final será su amiga.