수색…


클래스 선언

ABAP 클래스는 Globally 또는 Locally 선언 할 수 있습니다. 전역 클래스는 ABAP 저장소 내의 모든 객체에서 사용할 수 있습니다. 반대로 로컬 클래스는 선언 된 범위 내에서만 사용할 수 있습니다.

CLASS lcl_abap_class DEFINITION.
  PUBLIC SECTION.
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.

CLASS lcl_abap_class IMPLEMENTATION.
ENDCLASS.

생성자, 메소드

클래스 구현 :

CLASS lcl_abap_class DEFINITION.
  PUBLIC SECTION.
    METHODS: constructor,
             method1.
  PROTECTED SECTION.
  PRIVATE SECTION.
    METHODS: method2,
             method3.
ENDCLASS.

CLASS lcl_abap_class IMPLEMENTATION.
    METHOD constructor.
        "Logic
    ENDMETHOD.

    METHOD method1.
        "Logic
    ENDMETHOD.

    METHOD method2.
        "Logic
        method3( ).
    ENDMETHOD.

    METHOD method3.
        "Logic
    ENDMETHOD.
ENDCLASS.

메서드 호출 예제 :

DATA lo_abap_class TYPE REF TO lcl_abap_class.
CREATE OBJECT lo_abap_class. "Constructor call
lo_abap_class->method1( ).

매개 변수가있는 메소드 (가져 오기, 변경, 내보내기)

클래스 구현 :

CLASS lcl_abap_class DEFINITION.
  PRIVATE SECTION.
    METHODS method1 IMPORTING iv_string TYPE string
                     CHANGING cv_string TYPE string
                    EXPORTING ev_string TYPE string.
ENDCLASS.

CLASS lcl_abap_class IMPLEMENTATION.
    METHOD method1.
        cv_string = iv_string.
        ev_string = 'example'.
    ENDMETHOD.
ENDCLASS.

메서드 호출 예제 :

method1 (
  EXPORTING iv_string = lv_string
  IMPORTING ev_string = lv_string2
   CHANGING cv_string = lv_string3
).

파라미터를 돌려주는 메소드

클래스 구현 :

CLASS lcl_abap_class DEFINITION.
  PRIVATE SECTION.
    METHODS method1 RETURNING VALUE(rv_string) TYPE string.
ENDCLASS.

CLASS lcl_abap_class IMPLEMENTATION.
    METHOD method1.
        rv_string = 'returned value'.
    ENDMETHOD.
ENDCLASS.

메서드 호출 예제 :

lv_string = method1( ).

RETURNING 으로 선언 된 매개 변수는 값으로 전달됩니다.

상속 - 정의

정보

상속을 통해 기존 클래스에서 새 클래스를 파생시킬 수 있습니다. 이 작업은 INHERITING FROM 추가 기능을 사용하여 수행 할 수 있습니다.

슈퍼 클래스에서 상속 클래스의 서브 클래스 DEFINITION.

성명서. 새 클래스 서브 클래스는 기존 클래스 수퍼 클래스의 모든 구성 요소를 상속합니다. 새 클래스는 파생 된 클래스의 하위 클래스라고합니다. 원래 클래스는 새 클래스의 수퍼 클래스라고합니다. 클래스는 하나 이상의 직접 서브 클래스를 가질 수 있지만 하나의 직접 수퍼 클래스 만 가질 수 있습니다.

클래스 구현

CLASS lcl_vehicle DEFINITION.
ENDCLASS.

CLASS lcl_vehicle IMPLEMENTATION.
ENDCLASS.

CLASS lcl_car DEFINITION INHERITING FROM lcl_vehicle.
ENDCLASS.

CLASS lcl_car IMPLEMENTATION.
ENDCLASS.

상속 - 추상 및 최종 메서드 및 클래스

정보

ABSTRACTFINALMETHODSCLASS 문을 추가하면 추상 및 최종 메서드 또는 클래스를 정의 할 수 있습니다.

추상 메소드는 추상 클래스에서 정의되며 해당 클래스에서 구현 될 수 없습니다. 대신 클래스의 하위 클래스에서 구현됩니다. 추상 클래스는 인스턴스화 될 수 없습니다.

서브 클래스에서는 final 메소드를 재정의 할 수 없습니다. 최종 클래스에는 하위 클래스가있을 수 없습니다. 그들은 상속 나무를 맺습니다.


클래스 구현 :

CLASS lcl_abstract DEFINITION ABSTRACT.
    PUBLIC SECTION.
        METHODS: abstract_method ABSTRACT,
                 final_method FINAL
                 normal_method.
                
ENDCLASS.

CLASS lcl_abstract IMPLEMENTATION.
    METHOD final_method.
        "This method can't be redefined in child class!
    ENDMETHOD.

    METHOD normal_method.
        "Some logic
    ENDMETHOD.

        "We can't implement abstract_method here!

ENDCLASS.

CLASS lcl_abap_class DEFINITION INHERITING FROM lcl_abstract.
    PUBLIC SECTION.
        METHODS: abstract_method REDEFINITION,
                 abap_class_method.
ENDCLASS.

CLASS lcl_abap_class IMPLEMENTATION.
    METHOD abstract_method.
        "Abstract method implementation
    ENDMETHOD.

    METHOD abap_class_method.
        "Logic
    ENDMETHOD.
ENDCLASS.

메서드 호출 예제 :

DATA lo_class TYPE REF TO lcl_abap_class.
CREATE OBJECT lo_class.

lo_class->abstract_method( ).
lo_class->normal_method( ).
lo_class->abap_class_method( ).
lo_class->final_method( ).


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow