zoukankan      html  css  js  c++  java
  • ABAP类的方法(转载) 沧海

    方法参数传递:
    REPORT z_mehtod_para.
    *---------------------------------------------------------------------*
    *        CLASS vehicle DEFINITION
    *---------------------------------------------------------------------*
    *        ........                                                       *
    *---------------------------------------------------------------------*
    CLASS vehicle DEFINITION.
       PUBLIC SECTION.
         METHODS: accelerate IMPORTING rate TYPE i,
                  show_speed.
       PRIVATE SECTION.
         DATA speed TYPE i VALUE 0.
    ENDCLASS.
    *---------------------------------------------------------------------*
    *        CLASS vehicle IMPLEMENTATION
    *---------------------------------------------------------------------*
    *        ........                                                       *
    *---------------------------------------------------------------------*
    CLASS vehicle IMPLEMENTATION.
       METHOD accelerate.
         speed = speed + rate.
       ENDMETHOD.
       METHOD show_speed.
         WRITE: / 'Speed:',speed.
       ENDMETHOD.
    ENDCLASS.

    DATA o_vehicle TYPE REF TO vehicle.

    START-OF-SELECTION.
       CREATE OBJECT o_vehicle.
       CALL METHOD o_vehicle->accelerate EXPORTING rate = 2.
       CALL METHOD o_vehicle->accelerate EXPORTING rate = 2.
       CALL METHOD o_vehicle->show_speed.
    该示例输出如下:
         4
    方法还可以进行动态调用,即通过变量对方法进行指定,例如下列语句
       meth = acclerate.
       call method o_vehicle->(meth).

    函数方法:
    REPORT z_funtional_method.

    *---------------------------------------------------------------------*
    *        CLASS circle DEFINITION
    *---------------------------------------------------------------------*
    *        ........                                                       *
    *---------------------------------------------------------------------*
    CLASS circle DEFINITION.
       PUBLIC SECTION.
         METHODS get_area IMPORTING value(i_radius) TYPE i
                          RETURNING value(r_size)    TYPE f.
       PRIVATE SECTION.
         CONSTANTS pi TYPE f VALUE '3.14159265'.
    ENDCLASS.
    *---------------------------------------------------------------------*
    *        CLASS circle IMPLEMENTATION
    *---------------------------------------------------------------------*
    *        ........                                                       *
    *---------------------------------------------------------------------*
    CLASS circle IMPLEMENTATION.
       METHOD get_area.
         r_size = i_radius ** 2 * pi.
       ENDMETHOD.
    ENDCLASS.

    PARAMETERS radius TYPE i.
    DATA: o_circle TYPE REF TO circle,
           area TYPE f.

    START-OF-SELECTION.
       CREATE OBJECT o_circle.
       CALL METHOD o_circle->get_area
                   EXPORTING i_radius = radius
                   RECEIVING r_size = area.
       WRITE: / area.
       area = o_circle->get_area( radius ).
       WRITE: / area.

    构造方法和析构方法
    1. 构造方法
        构造方法是运行时环境自动调用的一种方法,用于为对象设定一个初始化状态,不能在程序运行过程中由程序代码调用.与其他方法类似构造方法也存在静态和实例两种形式.构造方法不一定需要在类中定

    义,系统通常会自动生成一个默认的构造方法,将对象状态设置为初始值.
    构造方法中不包含任何形式的输出参数,其功能只是定义对象状态,而不是对其进行改变.构造方法在create object语句中被调用,因此根据实例构造方法的定义,该语句本身也可以包含输出参数exporting和

    返回值exception选项.如果在对象创建过程中出现异常,则对象被删除,引用变量设为初始值.
         类构造方法属于静态方法,只能在程序中被调用一次,即第一次使用该类时调用,该方法也必须在公有部分声明,其名称必须为class_constructor.
         class-methods class_constructor.
         类构造方法不包含接口,而且在其中只能访问类的静态属性.
    构造方法:
    REPORT z_method_constructor.
    *---------------------------------------------------------------------*
    *        CLASS vehicle DEFINITION
    *---------------------------------------------------------------------*
    *        ........                                                       *
    *---------------------------------------------------------------------*
    CLASS vehicle DEFINITION.
       PUBLIC SECTION.
         METHODS: accelerate IMPORTING rate TYPE i,
                  constructor IMPORTING i_speed TYPE i,
                  show_speed.
       PRIVATE SECTION.
         DATA speed TYPE i VALUE 0.
    ENDCLASS.
    *---------------------------------------------------------------------*
    *        CLASS vehicle IMPLEMENTATION
    *---------------------------------------------------------------------*
    *        ........                                                       *
    *---------------------------------------------------------------------*
    CLASS vehicle IMPLEMENTATION.
       METHOD accelerate.
         speed = speed + rate.
       ENDMETHOD.
       METHOD show_speed.
         WRITE speed.
       ENDMETHOD.
       METHOD constructor.
         speed = i_speed.
       ENDMETHOD.
    ENDCLASS.

    DATA o_vehicle TYPE REF TO vehicle.

    START-OF-SELECTION.
       CREATE OBJECT o_vehicle EXPORTING i_speed = 4.
       CALL METHOD o_vehicle->accelerate EXPORTING rate = 2.
       CALL METHOD o_vehicle->accelerate EXPORTING rate = 2.
       CALL METHOD o_vehicle->show_speed.
    该示例输出如下:
          8
    在对象创建过程中,通过构造方法传递了一个速度初始值作为其初始状态.
    2. 析构方法
        在某些面向对象语言中还存在析构方法的概念,该方法在对象删除过程中被调用,目前ABAP对象中尚未提供该方法的实现形式.

    专注于企业信息化,最近对股票数据分析较为感兴趣,可免费分享股票个股主力资金实时变化趋势分析工具,股票交流QQ群:457394862
  • 相关阅读:
    Flux 是什么?
    看深度学习框架排名第一的TensorFlow如何进行时序预测!
    时间序列ARIMA模型预测方法,及相关函数使用方法介绍
    解决MATLAB在K-means提示“KMEANS does not accept complex data.”错误
    机器学习——朴素贝叶斯分类器
    K-近邻分类法及tabulate、rng、categorical、varfun、discretize函数用法介绍
    灰色预测模型及MATLAB实例
    数学建模——预测模型简介
    支持向量机(SVM)MATLAB 实例讲解,及选择训练方式使误差率尽可能减为0
    批量修改文件后缀名,文件批量排序
  • 原文地址:https://www.cnblogs.com/omygod/p/1005123.html
Copyright © 2011-2022 走看看