abap 创建类class,然后输入输出参数几个案例


REPORT ztest_class_02_lhy.

* 1. 类定义
CLASS car DEFINITION.
  PUBLIC SECTION.
    DATA: speed TYPE i.  " 属性:当前速度
    METHODS: accelerate IMPORTING i TYPE i       " 输入参数:加速值
                        EXPORTING out_speed TYPE i. " 输出参数:加速后的速度
ENDCLASS.

* 2. 类实现
CLASS car IMPLEMENTATION.
  METHOD accelerate.
    speed = speed + i.    " 修改内部状态
    out_speed = speed.    " 给输出参数赋值
  ENDMETHOD.
ENDCLASS.

* 3. 使用类
START-OF-SELECTION.
  DATA: obj TYPE REF TO car,   " 对象引用
        lv_input TYPE i VALUE 100,
        lv_output TYPE i.

  CREATE OBJECT obj. " 创建对象实例

  " 调用方法,注意调用时关键字与定义时相反!
  CALL METHOD obj->accelerate
    EXPORTING i = lv_input
    IMPORTING out_speed = lv_output.

  " 输出结果
  WRITE: / '加速后的速度:', lv_output.

*--------------------------------------------------------------
*1. 类定义,包含带参数的构造函数
CLASS lcl_connection DEFINITION.
  PUBLIC SECTION.
    METHODS constructor IMPORTING i_carrier_id TYPE string
                                  i_connection_id TYPE string.
    METHODS get_output RETURNING VALUE(r_output) TYPE string.
  PRIVATE SECTION.
    DATA: carrier_id TYPE string,
          connection_id TYPE string.
ENDCLASS.

* 2. 类实现
CLASS lcl_connection IMPLEMENTATION.
  METHOD constructor.
    " 将传入的参数赋值给对象的私有属性
    me->carrier_id = i_carrier_id.
    me->connection_id = i_connection_id.
  ENDMETHOD.
  METHOD get_output.
    r_output = |Carrier: { carrier_id }, Connection: { connection_id }|.
  ENDMETHOD.
ENDCLASS.

* 3. 使用类
START-OF-SELECTION.
  DATA: lo_connection TYPE REF TO lcl_connection.

  " 创建对象时,使用NEW #( ) 并传入参数[reference:12]
  lo_connection = NEW #( i_carrier_id = 'LH'
                         i_connection_id = '0400' ).

  " 调用方法获取并输出格式化的字符串
  WRITE: / lo_connection->get_output( ).


*--------------------------------------------------------------
CLASS lcl_changing_demo DEFINITION.
  PUBLIC SECTION.
    METHODS modify_text CHANGING cv_text TYPE string.
ENDCLASS.

CLASS lcl_changing_demo IMPLEMENTATION.
  METHOD modify_text.
    CONCATENATE cv_text ' - 已被修改' INTO cv_text.
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  DATA: lo_demo TYPE REF TO lcl_changing_demo,
        lv_my_text TYPE string VALUE '原始文本'.

  CREATE OBJECT lo_demo.

  " 调用方法,直接传入变量,方法内部会修改它
  CALL METHOD lo_demo->modify_text CHANGING cv_text = lv_my_text.

  WRITE: / lv_my_text. " 输出: 原始文本 - 已被修改
posted @ 2026-07-18 15:57  虚拟过客之IT老男人  阅读(5)  评论(0)    收藏  举报