
Você trabalha com atributos como variáveis normais do mesmo tipo. No entanto, fora da classe, o nome do atributo não é suficiente para identificar o atributo univocamente. Para abordar um atributo estático fora da classe, primeiro digite o nome da classe, depois o seletor de componentes estáticos (=>) e só depois o nome do atributo. O seletor de componente estático é uma seta dupla composta por um sinal de igual e o sinal de maior que.
Dica

Por exemplo, atributos a situação é ainda mais complicada: para acessar um componente de instância, você precisa de uma variável de referência.
Uma variável de referência é um tipo especial de variável que você usa para criar, endereçar e gerenciar um objeto. Uma variável de referência é usada para apontar para a instância de uma classe na memória do programa. Você declara variáveis de referência usando a instrução DATA com o suplemento TYPE REF TO seguido pelo nome de uma classe.
O valor inicial de uma variável de referência é chamado de referência NULL; a referência ainda não aponta para nenhum lugar.

Para criar uma nova instância de uma classe, você utiliza o operador NEW. O exemplo acima utiliza uma expressão NEW #( ) no lado direito de uma avaliação. O resultado da expressão é o endereço de memória da instância recém-criada. Essa referência é então armazenada na variável de referência no lado esquerdo da atribuição.
Você pode ter percebido que o nome da classe que deseja instanciar não aparece em nenhum lugar na expressão. No entanto, a partir da localização da expressão NEW #( ), o sistema já sabe que a conexão da variável de destino tem o tipo REF TO lcl_connection e, consequentemente, sabe que deve criar uma instância da classe lcl_connection. O sinal de libra após o operador NEW significa "usar o tipo da variável antes do sinal de igualdade". (em cenários mais avançados, você pode realmente especificar o nome da classe no lugar do sinal de libra).
Dica
Quando você aborda uma classe pela primeira vez (que pode estar acessando um componente estático ou criando uma instância da classe), o sistema de tempo de execução também carrega a definição de classe para a memória do programa. Esta definição de classe contém todos os atributos estáticos, que só existem uma vez na classe em vez de uma vez para cada instância.

Você aborda componentes estáticos utilizando o nome da classe e o seletor de componentes estáticos. Isso não funciona para componentes de instância porque você tem que indicar a instância que quer acessar.
Para abordar um atributo de instância fora da classe, primeiro digite a variável de referência, depois o seletor de componente de instância (->) e somente depois o nome do atributo. O seletor de componente de instância é uma seta composta por um traço e o sinal de maior que.
Nota

Uma das principais características da programação orientada a objetos é o fato de você poder criar várias instâncias da mesma classe. Cada instância é criada em um local diferente na memória do programa e os valores dos atributos de instância em uma instância são independentes dos valores em outras instâncias. Mas como o gráfico ilustra, as instâncias da mesma classe compartilham o valor para os atributos estáticos.

Se você atribuir uma variável de referência a outra, o sistema copiará para a segunda variável de referência o endereço do objeto para o qual a primeira variável está apontando. O resultado disso é que você tem duas variáveis de referência que apontam para o mesmo objeto.

Você pode usar a mesma variável de referência para criar mais de uma instância de uma classe. Cada vez que você utiliza a expressão NEW #( ), o sistema cria uma nova instância da classe e coloca o endereço da nova instância na variável de referência. No entanto, o endereço da nova instância sobregrava o endereço da instância anterior.
No exemplo acima, o endereço de lcl_connection (2) sobregrava o endereço de lcl_connection (1). Consequentemente, não há mais uma variável de referência no programa apontando para lcl_connection (1). Quando isso ocorre com uma instância, ela não pode mais ser acessada do programa.
Para evitar que a memória do programa fique cheia de objetos que não podem mais ser tratados e possivelmente haja um estouro, o sistema de tempo de execução tem um componente chamado coletor de lixo. O coletor de lixo é um programa que é executado periodicamente para procurar e destruir objetos para os quais não há mais referências apontando. Se, durante um programa, você excluir a última referência a um objeto sobregravando-o ou usando a instrução CLEAR, o coletor de lixo destruirá o objeto em sua próxima execução.
Nota
