¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo acceder a la clase protegida en OOABAP: Ejemplo de código para acceder a métodos protegidos

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 17 Vistas
0
Cargando...

Cómo acceder a la clase protegida en OOABAP.. ¿Alguien puede ayudarme con un código de ejemplo?

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

2 Respuestas

0
Cargando...

¿Qué es lo que quieres acceder? Los métodos estáticos y atributos pueden ser accedidos sin problemas de esta manera:

DATA: gc_formfield TYPE string.

gc_formfield = cl_http_server=>co_form_field.

Pero esto solo es posible si el atributo es público, de lo contrario tendrás que crear una instancia de la clase también para acceder a él.

Sin embargo, si quieres acceder a los atributos de la instancia tendrás que crear primero la instancia de esta manera:


REPORT zzz_test3.



*----------------------------------------------------------------------*
*       CLASS lcl_user DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_user DEFINITION INHERITING FROM cl_user_defaults CREATE PUBLIC.

  PUBLIC SECTION.

    DATA: gr_user TYPE syuname.


ENDCLASS.                    "lcl_user DEFINITION

*----------------------------------------------------------------------*
*       CLASS lcl_user IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_user IMPLEMENTATION.



ENDCLASS.                    "lcl_user IMPLEMENTATION

START-OF-SELECTION.

  DATA: gr_defaults TYPE REF TO lcl_user,
        gt_defaults TYPE usrdflt_itab,
        wa_defaults LIKE LINE OF gt_defaults.

  CREATE OBJECT gr_defaults
       EXPORTING
          iv_calling_program = sy-repid.

  gt_defaults = gr_defaults->get( ).

  LOOP AT gt_defaults INTO wa_defaults.

  ENDLOOP.

Aquí realmente no pasa nada, pero solo quiero mostrarte cómo instanciar esta clase y tener acceso a los métodos y atributos de la instancia.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hi,

Los datos declarados en la sección protegida pueden ser accedidos por la clase misma y también por sus subclases, pero no por usuarios externos fuera de la clase.

CLASE parentclass DEFINICIÓN .

SECCIÓN PÚBLICA.

DATA : commondata(30) tipo c valor 'Accesible para todos'.

MÉTODOS : SHOWVAL.

SECCIÓN PROTEGIDA.

DATA : protectdata(40) tipo c valor 'Datos protegidos'.

sección privada.

data : privatedata(30) tipo c valor 'Datos privados'.

FIN DE LA CLASE.

CLASE parentclass IMPLEMENTACIÓN.

MÉTODO : SHOWVAL.

write:/5 'Todos los datos de parentclass mostrados:-'.

write:/ sy-uline.

WRITE:/5 COMMONDATA,

/5 PROTECTDATA,

/5 PRIVATEDATA.

endmethod.

endclass.

CLASE childclass DEFINICIÓN HEREDANDO DE parentclass.

SECCIÓN PÚBLICA .

MÉTODOS : subval.

FIN DE LA CLASE.

CLASE childclass IMPLEMENTACIÓN.

método : subval.

skip 1.

write:/5 'Datos del padre mostrados desde el hijo-'.

write:/5 sy-uline.

WRITE:/5 COMMONDATA,

/5 PROTECTDATA.

Commondata = 'Datos públicos cambiados en la subclase'.

Protectdata = 'Datos protegidos cambiados en la subclase'.

write:/5 sy-uline.

WRITE:/5 COMMONDATA,

/5 PROTECTDATA.

endmethod.

endclass.

INICIO-DE-SELECCIÓN.

DATA : parent tipo ref a parentclass ,

child tipo ref a childclass .

create object : parent ,

child .

call method : parent->showval ,

child->subval.

skip 2.

parent->commondata = ‘Usuario cambiando datos públicos’.

write:/5 parent->commondata.

Salida

Todos los datos de parentclass mostrados:-

Accesible para todos

Datos protegidos

Datos privados

Datos del padre mostrados desde el hijo-

Accesible para todos

Datos protegidos

Datos públicos cambiados en subclase

Datos protegidos cambiados en la subclase

Usuario cambiando datos públicos

Si se accede fuera de la clase

-


CLASE c1 DEFINICIÓN .

SECCIÓN PÚBLICA.

DATA : commondata(30) tipo c valor 'Accesible para todos'.

SECCIÓN PROTEGIDA.

DATA : protectdata(40) tipo c valor 'Datos protegidos'.

sección privada.

data : privatedata(30) tipo c valor 'Datos privados'.

FIN DE LA CLASE.

CLASE c1 IMPLEMENTACIÓN.

endclass.

INICIO-DE-SELECCIÓN.

DATA : obj1 tipo ref a c1.

create object : obj1.

write:/5 obj1->protectdata ,

obj1->privatedata.

Se generará un error de compilación que demostrará que los componentes protegidos y privados de una clase no pueden ser accedidos por usuarios externos.

*Puntos de recompensa.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?