2020-08-18 08:09发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
在创建CLASSES时,我们使用DEFERRED,INHERETED,LOAD,并且在声明Method&Import参数时,我们使用PUBLIC SECTION,PRIVATE SECTION,这是什么意思?
谢谢。
消息的编辑者:
Srinivas
这是有关使用延迟类的一个小示例。
假设您有2个类……Class1和Class2
使用延迟的Class,您表示系统所定义的类在同一上下文中。
例如。
Class Class2定义延迟。
CLASS Class1定义。
DATA ABCD TYPE REF TO Class2。
",尽管尚未声明它,但仍可以使用Class 2的引用变量。
ENDCLASS。
CLASS Class2定义。
DATA XYZ类型引用Class1。
否则,SAP会在全局库中查找Class2并给您错误。
关于此,
Ferry Lianto
谢谢Ferry,这是非常有帮助且有意义的答案。请切实解释。
chk此帮助
带有DEFERRED加法的变量使程序中的类临时为已知。
在没有添加PUBLIC的情况下,此变体使本地类在其实际定义之前已知。 该程序必须在程序的后面包含一个实际的类声明部分。 在实际定义该类之前,不能访问该类的各个组件。 如果要在定义本地类之前对其进行引用,则需要使用此语句。
通过添加PUBLIC,此变体使全局类已知,并推迟加载该类直到当前程序单元的末尾。 加载类后,您只能访问该类的各个组件。 引用全局类时,可以使用此语句来防止不必要的递归。
感谢所有人。
嗨,Srinivas,
公共组件: -对所有人可见 受保护的组件: -在课堂上可见 -在子类中可见 私人配件: -仅在班级内可见
希望这会有所帮助,
Sajan Joseph。
推迟。
用于在代码中的某个位置引用类,并且该类未在行之前定义。
C2类定义已延迟。 C1类定义。 公共部分。 引用到C2的数据O2类型。 ENDCLASS。 C2类定义。 公共部分。 data:num类型i值5。 ENDCLASS。 选择开始。 数据:obj1类型引用到C1。 创建对象obj1。 创建对象obj1-> o2。 写:/5 obj1-> o2-> num。
加载
通常,在您第一次在程序中使用类时,编译器通常会从类库中加载全局类的描述。 但是,如果对程序中的全局类的首次访问是对其静态组件或事件处理程序方法的定义中的访问,则必须使用语句CLASS class DEFINITION LOAD显式加载它。 此变量没有相应的ENDCLASS语句。
组件的可见性
每个类组件都有一个可见性。 在ABAP对象中,整个类定义分为三个可见性部分:PUBLIC,PROTECTED和PRIVATE。 人们永远无法通过继承来更改组件的可见性。
PUBLIC:本节由子类自己的公共组件以及所有超类的所有公共组件组成。 可以不受限制地访问子类的public部分。
受保护的:此部分由子类自己的受保护组件以及所有超类的所有受保护组件组成。
PRIVATE:此部分由子类自己的专用组件组成,这些组件只能在该子类中访问。 每个子类都有自己的私有组件,甚至不能使用其超类的私有组件。 但是,只要不重新定义从超类继承的方法,即使子类具有相同名称的私有属性,它仍将使用父类的私有属性,而不是子类的私有属性。
希望这会有所帮助。
此致
Richa
最多设置5个标签!
嗨,
这是有关使用延迟类的一个小示例。
假设您有2个类……Class1和Class2
使用延迟的Class,您表示系统所定义的类在同一上下文中。
例如。
Class Class2定义延迟。
CLASS Class1定义。
DATA ABCD TYPE REF TO Class2。
",尽管尚未声明它,但仍可以使用Class 2的引用变量。
ENDCLASS。
CLASS Class2定义。
DATA XYZ类型引用Class1。
ENDCLASS。
否则,SAP会在全局库中查找Class2并给您错误。
关于此,
Ferry Lianto
谢谢Ferry,这是非常有帮助且有意义的答案。请切实解释。
嗨,
chk此帮助
带有DEFERRED加法的变量使程序中的类临时为已知。
在没有添加PUBLIC的情况下,此变体使本地类在其实际定义之前已知。 该程序必须在程序的后面包含一个实际的类声明部分。 在实际定义该类之前,不能访问该类的各个组件。 如果要在定义本地类之前对其进行引用,则需要使用此语句。
通过添加PUBLIC,此变体使全局类已知,并推迟加载该类直到当前程序单元的末尾。 加载类后,您只能访问该类的各个组件。 引用全局类时,可以使用此语句来防止不必要的递归。
感谢所有人。
嗨,Srinivas,
希望这会有所帮助,
Sajan Joseph。
嗨,
推迟。
用于在代码中的某个位置引用类,并且该类未在行之前定义。
加载
通常,在您第一次在程序中使用类时,编译器通常会从类库中加载全局类的描述。 但是,如果对程序中的全局类的首次访问是对其静态组件或事件处理程序方法的定义中的访问,则必须使用语句CLASS class DEFINITION LOAD显式加载它。 此变量没有相应的ENDCLASS语句。
组件的可见性
每个类组件都有一个可见性。 在ABAP对象中,整个类定义分为三个可见性部分:PUBLIC,PROTECTED和PRIVATE。 人们永远无法通过继承来更改组件的可见性。
PUBLIC:本节由子类自己的公共组件以及所有超类的所有公共组件组成。 可以不受限制地访问子类的public部分。
受保护的:此部分由子类自己的受保护组件以及所有超类的所有受保护组件组成。
PRIVATE:此部分由子类自己的专用组件组成,这些组件只能在该子类中访问。 每个子类都有自己的私有组件,甚至不能使用其超类的私有组件。 但是,只要不重新定义从超类继承的方法,即使子类具有相同名称的私有属性,它仍将使用父类的私有属性,而不是子类的私有属性。
希望这会有所帮助。
此致
Richa
一周热门 更多>