¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como acessar a classe protegida no OOABAP: Exemplo de código para acessar métodos protegidos

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

Como acessar a classe protegida no OOABAP.. Alguém pode me ajudar com um código de exemplo?

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

2 Respuestas

0
Cargando...

O que você quer acessar? Os métodos estáticos e atributos podem ser acessados sem problemas desta maneira:

DATA: gc_formfield TYPE string.

gc_formfield = cl_http_server=>co_form_field.

Mas isso só é possível se o atributo for público, caso contrário você terá que criar uma instância da classe também para acessá-lo.

No entanto, se você deseja acessar os atributos da instância, primeiro terá que criar a instância desta maneira:


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.

Aqui realmente não acontece nada, mas só quero te mostrar como instanciar esta classe e ter acesso aos métodos e atributos da instância.

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

Olá,

Os dados declarados na seção protegida podem ser acessados pela própria classe e também por suas subclasses, mas não por usuários externos fora da classe.

CLASSE parentclass DEFINIÇÃO.

SEÇÃO PÚBLICA.

DATA: commondata(30) tipo c valor 'Acessível para todos'.

MÉTODOS: SHOWVAL.

SEÇÃO PROTEGIDA.

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

seção privada.

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

FIM DA CLASSE.

CLASSE parentclass IMPLEMENTAÇÃO.

MÉTODO: SHOWVAL.

write:/5 'Todos os dados de parentclass mostrados:-'.

write:/ sy-uline.

WRITE:/5 COMMONDATA,

/5 PROTECTDATA,

/5 PRIVATEDATA.

endmethod.

endclass.

CLASSE childclass DEFINIÇÃO HERDANDO DE parentclass.

SEÇÃO PÚBLICA.

MÉTODOS: subval.

FIM DA CLASSE.

CLASSE childclass IMPLEMENTAÇÃO.

método: subval.

skip 1.

write:/5 'Dados do pai mostrados pelo filho-'.

write:/5 sy-uline.

WRITE:/5 COMMONDATA,

/5 PROTECTDATA.

Commondata = 'Dados públicos alterados na subclasse'.

Protectdata = 'Dados protegidos alterados na subclasse'.

write:/5 sy-uline.

WRITE:/5 COMMONDATA,

/5 PROTECTDATA.

endmethod.

endclass.

INÍCIO-DA-SELEÇÃO.

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 = 'Usuário alterando dados públicos'.

write:/5 parent->commondata.

Saída

Todos os dados de parentclass mostrados:-

Acessível para todos

Dados protegidos

Dados privados

Dados do pai mostrados pelo filho-

Acessível para todos

Dados protegidos

Dados públicos alterados na subclasse

Dados protegidos alterados na subclasse

Usuário alterando dados públicos

Se acessado fora da classe

-


CLASSE c1 DEFINIÇÃO.

SEÇÃO PÚBLICA.

DATA: commondata(30) tipo c valor 'Acessível para todos'.

SEÇÃO PROTEGIDA.

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

seção privada.

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

FIM DA CLASSE.

CLASSE c1 IMPLEMENTAÇÃO.

endclass.

INÍCIO-DA-SELEÇÃO.

DATA: obj1 tipo ref a c1.

create object: obj1.

write:/5 obj1->protectdata,

obj1->privatedata.

Será gerado um erro de compilação que demonstrará que os componentes protegidos e privados de uma classe não podem ser acessados por usuários externos.

*Pontos 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?