类方法的参数接口部分是在类声明部分通过METHODS语句定义的,而且该接口不需要在类的实现部分再次的出现。
语法形式:
METHODS meth
IMPORTING ... [VALUE(i)|i] TYPE type [OPTIONAL|DEFAULT def]...
EXPORTING ... [VALUE(e)|e] TYPE type [OPTIONAL]...
CHANGING ... [VALUE(c)|c] TYPE type [OPTIONAL|DEFAULT def]...
RETURNING VALUE(r)
EXCEPTIONS ...x...
用法: IMPORTING指定一个或多个输入参数
EXPORTING指定一个或多个输出参数
CHANGE指定一个或多个输入输出参数
VALUE指定参数传递形式(传值和引用传值)后者为默认方式
TYPE指定参数类型
OPTIONAL和DEFAULT已定义的输入参数必须在调用是进行传递
RETURNING该项可代替IMPORTING和EXPORTING
二.调用方法
在调用方法时,除去指定为可选的参数之外,所有参数都必须传递相应的实参值。
CALL METHOD [oref->|class=>] meth
EXPORTING ...i=f...
IMPORTING ...e=g...
CHANGING ...c=c...
RECEIVING ...c=c...
EXCEPTIONS ...x=rc...
该语句适用于包括类内部直接调用,实例调用,静态调用三种情况。
其中IMPORTING的i项将接受CALL METHOD中EXPORTING的f实参;而用EXPORTING的参数e,通过IMPORTING的实参g传递;内部的意外处理与功能模块相似,异常 通过RAISE和MESSAGE RAISE触发,并通过系统字段SY-SVBRC返回错误代码。
若方法种只包含输入,而没有输出,则通过:
CALL METHOD [oref->|class=>] meth().
CALL METHOD [oref->|class=>] meth(f).
CALL METHOD [oref->|class=>] meth(i=f).
其调用中只包含0,1个多个输入参数情况。
除上述外,ABAP OBJECT还提供另一种形式,可方便实现参数的动态传递:
CALL METHOD [oref->|class=>] meth
PARAMETER-TABLE ptab
EXCEPTION-TABLE etab.
其中实参必须在程序中放置在两个特定类型的内表中,传递给方法,ptab可参照ABAP中的ABAP_PARMBIND(行类型)和ABAP_PARMBIND_TAB(表类型)
异常表etab可参照ABAP中的ABAP_EXCBIND(行类型) ABAP_EXCBIND_TAB(表类型)
三.函数方法
函数也是一种过程模块,其特殊之处是在调用时可以使用操作符(->、=>)来代替调用语句,并可作为操作数直接应用于操作语句中
METHODS meth
IMPORTING ...[VALUE(i)|i]TYPE type [OPTIONAL|DEFAULT def]...
RETURNING VALUE(r).
CALL METHOD [oref->|class=>]meth
EXPORTING ...i=f...
RECEIVING r=h.
注:任意个输入,只有一个输出。
四.构造方法
1.构造方法
构造方法是由运行时环境自动调用的一种方法,用于为对象设定一个初始化状态,不能在程序运行过程中由程序代码调用。
注:系统可自行生成一个默认的构造方法,也存在静态和实例两种形式
1).实例构造方法在每一个对象创建时(CREATE OBJECT)被系统调用;若在类声明部分进行声明,则需要在实现部分进行代码实现。
两点区别:首先,有预定义名称CONSTRUVTOR;其次,必须在公有部分进行声明。
METHODS constructor
IMPORTING ...[VALUE(i)|i]TYPE type [OPTIONAL|DEFAULT def]...
EXCEPTIONS ...e...
不包含任何形式输出参数,其次定义对象状态,而不是进行改变。该语句本身也可包含输出参数EXPORTING和返回值EXCEPTION选项,如果对象创建出现异常,则删除对象,引用变量设为初始值。
2).静态类构造方法,只在程序中被调用一次,即第一次使用该类时调用,其必须在公有部分声明,名称必须为CLASS_CONSTRUCTOR.
CLASS-METHODS class-constructor
2.析构方法
其概念是在对象删除的过程中被调用,目前ABAP对象尚未提供。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7180389/viewspace-623684/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7180389/viewspace-623684/