欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > [SAP ABAP] 面向对象程序设计-属性和方法

[SAP ABAP] 面向对象程序设计-属性和方法

2025/8/26 4:27:59 来源:https://blog.csdn.net/Hudas/article/details/143515840  浏览:    关键词:[SAP ABAP] 面向对象程序设计-属性和方法
属性( Attributes) :对象的属性及特征
方法( Method ):定义对象的行为

从对象属性和方法是属于类还是属于对象的实例,可以区分为静态属性(static attributes) / 静态方法(static methods),实例属性(instance attributes) / 实例方法(instance methods)

1.静态属性和方法

静态属性

通过 CLASS-DATA 关键字进行声明,通过类名以及 => 符号进行调用

静态方法

通过 CLASS-METHODS 关键字进行声明,通过类名以及 => 符号进行调用

静态属性和方法属于类本身,在各个对象实例之间是共享的,通过类名来访问,调用的时候,不需要创建对象的实例

例1 

REPORT z437_test_2025.* 静态属性和方法的定义
CLASS lcl_math DEFINITION.PUBLIC SECTION.TYPES: ty_double TYPE p LENGTH 10 DECIMALS 2.CLASS-DATA pi TYPE p LENGTH 10 DECIMALS 7 VALUE '3.1415926'.CLASS-METHODS: pow IMPORTING x TYPE ty_doubley TYPE ty_doubleRETURNING VALUE(pow_value) TYPE ty_double.
ENDCLASS.CLASS lcl_math IMPLEMENTATION.METHOD pow.pow_value = x ** y.ENDMETHOD.
ENDCLASS.* 静态属性和方法的访问
START-OF-SELECTION.DATA: result TYPE p DECIMALS 2.CALL METHOD lcl_math=>powEXPORTINGx         = 25y         = 3RECEIVINGpow_value = result.*  result = lcl_math=>pow( x = 25 y = 3 ).WRITE: / 'pi = ', lcl_math=>pi LEFT-JUSTIFIED,/ '25 ** 3 = ', result LEFT-JUSTIFIED.

输出结果:

在ABAP中,类中定义方法,返回方法的结果值需要使用RETURNING VALUE(xxx)

方法定义 IMPORTING  调用时对应 EXPORTING
方法定义 RETURNING 调用时对应 RECEIVING

2.实例属性和方法 

实例属性

实例属性属于对象的实例(object instance),通过DATA关键字进行声明,通过对象变量以及 ->符号进行调用

实例方法

实例方法属于对象的实例(object instance),通过METHODS关键字进行声明,通过对象变量以及 ->符号进行调用

例1

REPORT z437_test_2025.* 实例属性和方法的定义
CLASS lcl_student DEFINITION.PUBLIC SECTION.METHODS: constructor IMPORTING sid           TYPE stringname          TYPE stringage           TYPE int2current_class TYPE string.METHODS: set_age   IMPORTING new_age   TYPE int2,set_class IMPORTING new_class TYPE string,to_string RETURNING VALUE(rv) TYPE string.PRIVATE SECTION.DATA: sid           TYPE string,name          TYPE string,age           TYPE int2,current_class TYPE string.
ENDCLASS.                              " lcl_student DEFINITIONCLASS lcl_student IMPLEMENTATION.METHOD constructor.me->sid = sid.me->name = name.me->age = age.me->current_class = current_class.ENDMETHOD.                           " constructorMETHOD set_age.me->age = new_age.ENDMETHOD.                           " set_ageMETHOD set_class.me->current_class = current_class.ENDMETHOD.                           " set_classMETHOD to_string.DATA: result TYPE string.DATA: age_str TYPE string.age_str = me->age.CONCATENATE '<Student: (ID:' me->sid ',Name:' me->name ',Age:' age_str',Class:' me->current_class ')>'INTO result.rv = result.ENDMETHOD.                          ENDCLASS.                             " lcl_student IMPLEMENTATION* 实例属性和方法的访问
START-OF-SELECTION.DATA: stu_info TYPE string." 定义引用类型的变量DATA: s1 TYPE REF TO lcl_student." 创建对象的实例" 在本例中,构造函数有4个参数,方法定义时关键字为IMPORTING,调用时对应EXPORTING关键字CREATE OBJECT s1 EXPORTING sid = '001'name = 'Andy'age = 18current_class = '卓越21班'." 调用对象的属性和方法CALL METHOD s1->set_ageEXPORTINGnew_age = 20.*  s1->set_age( 20 ).CALL METHOD s1->set_classEXPORTINGnew_class = '卓越A班'.*  s1->set_class( '卓越A班' ).stu_info = s1->to_string( ).WRITE: / stu_info.

输出结果:

构造方法(constructor)是一类特殊的方法,在创建对象实例时,构造方法自动运行 

总结

① 静态属性和方法与类相关,实例属性/方法与对象实例相关

② 静态属性和方法通过类名 + => 符号进行调用

     实例属性和方法通过对象变量 + -> 符号进行调用

提示Tips:静态属性和方法不能访问实例属性和方法,实例属性和方法能访问静态属性和方法

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词