サーチ…
クラス宣言
ABAPクラスは、 グローバルまたはローカルで宣言できます。グローバルクラスは、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追加
スーパークラスから 継承する クラスのサブクラスの定義 。
ステートメント。新しいクラスのサブクラスは、既存のクラスのスーパークラスのすべてのコンポーネントを継承します。新しいクラスは、それが派生したクラスのサブクラスと呼ばれます。元のクラスは新しいクラスのスーパークラスと呼ばれます。クラスは複数の直接サブクラスを持つことができますが、1つの直接スーパークラスしか持てません。
クラスの実装
CLASS lcl_vehicle DEFINITION.
ENDCLASS.
CLASS lcl_vehicle IMPLEMENTATION.
ENDCLASS.
CLASS lcl_car DEFINITION INHERITING FROM lcl_vehicle.
ENDCLASS.
CLASS lcl_car IMPLEMENTATION.
ENDCLASS.
継承 - 抽象メソッドと最終メソッドとクラス
情報
METHODSおよびCLASSステートメントに対するABSTRACTおよび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