글로벌 클래스(Global Classes)란?
SE24)에서 정의된 클래스입니다.메서드 호출 방법
예제
" 글로벌 클래스의 인스턴스 메서드 호출
DATA: lo_class TYPE REF TO zcl_example_class,
lv_result TYPE I.
CREATE OBJECT lo_class.
CALL METHOD lo_class->calculate_sum
EXPORTING
iv_num1 = 10
iv_num2 = 20
IMPORTING
ev_result = lv_result.
WRITE: / 'Result:', lv_result.
" 정적 메서드 호출
CALL METHOD zcl_example_class=>display_message
EXPORTING
iv_message = 'Hello ABAP OOP!'.
구성 요소 설명
zcl_example_class: 글로벌 클래스.calculate_sum: 인스턴스 메서드.display_message: 정적 메서드.글로벌 클래스 생성
SE24 트랜잭션을 사용하여 글로벌 클래스를 생성.정적 메서드 생성
STATIC 키워드를 사용.정적 메서드 예제
CLASS zcl_example_class DEFINITION.
PUBLIC SECTION.
CLASS-METHODS display_message
IMPORTING
iv_message TYPE STRING.
ENDCLASS.
CLASS zcl_example_class IMPLEMENTATION.
METHOD display_message.
WRITE: / iv_message.
ENDMETHOD.
ENDCLASS.
" 정적 메서드 호출
CALL METHOD zcl_example_class=>display_message
EXPORTING
iv_message = 'This is a static method!'.
정적 메서드의 특징
로컬 클래스(Local Classes)란?
로컬 클래스의 정의 및 사용
CLASS ... DEFINITION과 CLASS ... IMPLEMENTATION으로 정의합니다.예제
REPORT zlocal_class_example.
CLASS lcl_example DEFINITION.
PUBLIC SECTION.
METHODS calculate_sum
IMPORTING iv_num1 TYPE I
iv_num2 TYPE I
RETURNING VALUE(rv_result) TYPE I.
ENDCLASS.
CLASS lcl_example IMPLEMENTATION.
METHOD calculate_sum.
rv_result = iv_num1 + iv_num2.
ENDMETHOD.
ENDCLASS.
" 로컬 클래스 사용
DATA: lo_example TYPE REF TO lcl_example,
lv_result TYPE I.
CREATE OBJECT lo_example.
lv_result = lo_example->calculate_sum( iv_num1 = 15 iv_num2 = 25 ).
WRITE: / 'Sum:', lv_result.
로컬 클래스의 특징
캡슐화(Encapsulation):
PRIVATE, PROTECTED, PUBLIC 접근 지정자를 통해 제어.상속(Inheritance):
CLASS parent_class DEFINITION.
PUBLIC SECTION.
METHODS display_message.
ENDCLASS.
CLASS child_class DEFINITION INHERITING FROM parent_class.
PUBLIC SECTION.
METHODS display_message REDEFINITION.
ENDCLASS.
CLASS child_class IMPLEMENTATION.
METHOD display_message.
WRITE: / 'Child class message.'.
ENDMETHOD.
ENDCLASS.
다형성(Polymorphism):