Olá,
Os componentes de instância existem separadamente em cada instância (objeto) da classe e são referenciados usando o seletor de componente de instância com '->'.
Os componentes estáticos existem apenas uma vez por classe e são válidos para todas as instâncias da classe. Eles são declarados com a palavra-chave CLASS-
Os componentes estáticos podem ser usados sem mesmo criar uma instância da classe e são referenciados usando o seletor de componente estático '=>'.
Exemplo 1:
O programa contém uma classe C1 com o atributo estático: NUM. O método: M1 incrementa o atributo estático em 1 e exibe o valor sempre que é chamado.
Na parte principal START-OF-SELECTION, dois objetos são criados: OBJ1 e OBJ2 da classe C1.
Primeiramente, o atributo estático: NUM é alterado e acessado fora da classe usando o seletor de componente de classe, '=>'.
Em seguida, ambos os objetos OBJ1 e OBJ2 são usados para chamar o método: M1 que exibe o novo valor do atributo estático: NUM.
O fato do valor do atributo estático ser incrementado sempre que o método M1 de diferentes objetos é chamado mostra que essa variável pode manter seu valor durante toda a execução.
informe ysubdel.
CLASS c1 DEFINIÇÃO.
SEÇÃO PÚBLICA.
CLASS-DATA: NUM TIPO I.
MÉTODOS: M1.
ENDCLASS.
CLASS c1 IMPLEMENTAÇÃO.
MÉTODO m1.
num = num + 1.
write:/5 num.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
c1=>num = 3.
write:/5 c1=>num.
DATA: OREF1 TIPO REF A C1,
OREF2 TIPO REF A C1.
CRIAR OBJETO: OREF1,
OREF2.
CHAMAR MÉTODO OREF1->M1.
CHAMAR MÉTODO OREF2->M1.
Exemplo2:
Os métodos estáticos de uma classe só podem usar atributos estáticos dessa classe. Eles não podem usar atributos de instância. Porém, os métodos de instância podem usar ambos.
Desc:
Componente tipo estático/instância
stnum Dado estático
Instnum Dado Instância
Stmeth Método Estático
Instmeth Método Instância
Tanto os métodos estáticos quanto de instância tentam exibir valores dos atributos estáticos e de instância: STNUM e INSTNUM.
Na compilação, um erro será gerado demonstrando que o método estático STMETH não pode funcionar com o atributo de instância INSTNUM.
INFORME YSUBDEL.
CLASS C1 DEFINIÇÃO.
SEÇÃO PÚBLICA.
CLASS-DATA: STNUM TIPO I VALOR 5.
DATA: INSTNUM TIPO I VALOR 6.
CLASS-METHODS: STMETH.
MÉTODOS: INSTMETH.
ENDCLASS.
CLASS C1 IMPLEMENTAÇÃO.
MÉTODO: STMETH.
WRITE:/5 STNUM.
WRITE:/5 INSTNUM.
ENDMETHOD.
MÉTODO INSTMETH.
WRITE:/5 STNUM.
WRITE:/5 INSTNUM.
ENDMETHOD.
ENDCLASS.