
동일한 유형의 일반 변수와 같은 특성을 사용합니다. 그러나 클래스 외부에서는 특성 이름으로는 특성을 명확하게 식별할 수 없습니다. 클래스 외부에서 정적 특성을 처리하려면 먼저 클래스 이름을 입력한 다음 정적 컴포넌트 선택자(=>)를 입력한 다음 특성 이름만 지정합니다. 정적 컴포넌트 선택자는 등호 및 보다 큼 부호로 구성된 이중 화살표입니다.
힌트

예를 들어 특성의 경우 상황이 훨씬 더 복잡합니다. 인스턴스 컴포넌트에 액세스하려면 참조 변수가 필요합니다.
참조 변수는 오브젝트를 생성, 처리, 관리하는 데 사용하는 특별한 종류의 변수입니다. 참조 변수는 프로그램 메모리의 클래스 인스턴스를 가리키는 데 사용됩니다. DATA 문을 사용하고 클래스 이름 뒤에 TYPE REF TO를 추가하여 참조 변수를 선언합니다.
참조 변수의 초기 값을 NULL 참조라고 합니다. 참조는 아직 아무 것도 가리키지 않습니다.

클래스의 신규 인스턴스를 생성하려면 NEW 연산자를 사용합니다. 위의 예에서는 값 할당 오른쪽에 NEW #( ) 식을 사용합니다. 표현식의 결과는 새로 생성된 인스턴스의 메모리 주소입니다. 그러면 이 참조가 지정의 왼쪽에 있는 참조 변수에 저장됩니다.
표현식에는 인스턴스화하려는 클래스 이름이 표시되지 않습니다. 그러나 NEW #( ) 식의 위치에서 대상 변수 연결의 유형이 REF TO lcl_connection임을 이미 알고 있으므로 lcl_connection 클래스의 인스턴스를 생성해야 한다는 것을 알고 있습니다. NEW 연산자 뒤의 파운드 기호(#)는 "등호 앞에 변수 유형 사용"을 의미합니다. (고급 시나리오에서는 파운드 기호 자리에 클래스 이름을 실제로 지정할 수 있습니다.)
힌트
클래스를 처음으로 처리하는 경우(정적 컴포넌트에 액세스하거나 클래스의 인스턴스를 생성할 수 있음) 런타임 시스템에서 클래스 정의도 프로그램 메모리에 로드합니다. 이 클래스 정의에는 각 인스턴스에 대해 한 번만 존재하는 모든 정적 특성이 클래스에 한 번만 포함됩니다.

클래스 이름과 정적 컴포넌트 선택기를 사용하여 정적 컴포넌트를 처리합니다. 액세스할 인스턴스를 지정해야 하기 때문에 인스턴스 컴포넌트에서는 작동하지 않습니다.
클래스 외부에서 인스턴스 특성을 처리하려면 먼저 참조 변수를 입력한 다음 인스턴스 컴포넌트 선택자(->)를 입력한 다음 특성 이름만 지정합니다. 인스턴스 컴포넌트 선택자는 대시와 보다 큼 부호로 구성된 화살표입니다.
노트

오브젝트 지향 프로그래밍의 주요 특징 중 하나는 동일한 클래스의 여러 인스턴스를 생성할 수 있다는 점입니다. 각 인스턴스는 프로그램 메모리의 다른 위치에 생성되며 한 인스턴스의 인스턴스 특성 값은 다른 인스턴스의 값과 독립적입니다. 그러나 그림에서 볼 수 있듯이 동일한 클래스의 인스턴스는 정적 특성 값을 공유합니다.

하나의 참조 변수를 다른 참조 변수에 지정하면 시스템에서 첫 번째 변수가 가리키는 오브젝트의 주소를 두 번째 참조 변수에 복사합니다. 결과적으로 두 개의 참조 변수가 동일한 오브젝트를 가리키게 됩니다.

동일한 참조 변수를 사용하여 클래스의 인스턴스를 여러 개 생성할 수 있습니다. NEW #( ) 표현식을 사용할 때마다 클래스의 신규 인스턴스가 생성되고 신규 인스턴스의 주소가 참조 변수에 배치됩니다. 그러나 신규 인스턴스의 주소는 이전 인스턴스의 주소를 덮어씁니다.
위의 예에서 lcl_connection (2)의 주소는 lcl_connection (1)의 주소를 덮어씁니다. 따라서 프로그램에 lcl_connection (1)을 가리키는 참조 변수가 더 이상 없습니다. 인스턴스에 이러한 일이 발생하면 프로그램에서 이 인스턴스가 더 이상 처리될 수 없습니다.
런타임 시스템에는 프로그램 메모리가 더 이상 처리될 수 없는 인스턴스로 채워지고 그에 따라 오버플로우가 발생하는 것을 방지하기 위한 가비지 컬렉터(garbage collector)라는 컴포넌트가 있습니다. 가비지 컬렉터는 참조에서 더 이상 가리키지 않는 오브젝트를 찾고 파기하기 위해 정기적으로 실행되는 프로그램입니다. 프로그램 실행 중에 덮어쓰거나 CLEAR 문을 사용하여 오브젝트에 대한 마지막 참조를 삭제하면 다음 번에 가비지 컬렉터가 실행될 때 해당 오브젝트가 파기됩니다.
노트
