`
jgtang82
  • 浏览: 404110 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Class def & impl, Inherit & overwriting, interface & using it, event & handler

    博客分类:
  • ABAP
阅读更多

Below codes is a simply and rough example could be used as a reference if you have a long time or never touch ABAP OO but would like to use it right now in you project.

 

REPORT  YT_OO_T01.
*Interface
INTERFACE lif_test.
  DATA: v_info TYPE c LENGTH 10.
  METHODS: display_info.
ENDINTERFACE.

*Define Class
CLASS lcl_test DEFINITION.
  PUBLIC SECTION.
    EVENTS:
      v_event EXPORTING VALUE(ex_info) TYPE string.
    METHODS:
      constructor,
      set_info IMPORTING p_info TYPE c,
      display_info.

    CLASS-DATA:
      v_static_value TYPE c LENGTH 10.
    CLASS-METHODS:
      display_static_info.
    INTERFACES:
      lif_test.

  PROTECTED SECTION.
    METHODS:
      protected_method.

  PRIVATE SECTION.
    DATA: v_info TYPE c LENGTH 10.

ENDCLASS.                    "LCL_TEST DEFINITION

*Implementation
CLASS lcl_test IMPLEMENTATION.
  METHOD constructor.
    v_info = 'initial'.
  ENDMETHOD.                    "constructor

  METHOD set_info.
    v_info = p_info.
  ENDMETHOD.                    "set_info

  METHOD display_info.
    WRITE:/ v_info.
    RAISE EVENT v_event EXPORTING ex_info = 'call event handler'.
  ENDMETHOD.                    "display_info

  METHOD display_static_info.
    v_static_value = 'initial'.
    WRITE:/ v_static_value.
  ENDMETHOD.                    "display_static_info

  METHOD protected_method.
    WRITE:/ 'call protected method'.
  ENDMETHOD.                    "protected_method

  METHOD lif_test~display_info.
    lif_test~v_info = 'Interface'.
    WRITE:/ 'v_info = ', v_info,
            ',lif_test~v_info = ', lif_test~v_info.
  ENDMETHOD.
ENDCLASS.                    "LCL_TEST IMPLEMENTATION

*Inheriting
CLASS lcl_test_sub DEFINITION INHERITING FROM lcl_test.
  PUBLIC SECTION.
    METHODS: display_sub.
*When we redefine a method, we can't change its visibility (PUBLIC, PROTECTED)
  PROTECTED SECTION.
    METHODS: protected_method REDEFINITION.
ENDCLASS.

CLASS lcl_test_sub IMPLEMENTATION.
  METHOD display_sub.
    set_info( 'hello sub' ).
    display_info( ).
    protected_method( ).
  ENDMETHOD.
  METHOD protected_method.
    super->protected_method( ).
    WRITE:/ 'Call protected method in sub class'.
  ENDMETHOD.
ENDCLASS.

*Event Handler
CLASS lcl_event_handler DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS:
      on_event FOR EVENT v_event OF lcl_test
               IMPORTING ex_info sender.
ENDCLASS.

CLASS lcl_event_handler IMPLEMENTATION.
  METHOD on_event.
    write:/ ex_info.
  ENDMETHOD.
ENDCLASS.

*Using
START-OF-SELECTION.
  lcl_test=>display_static_info( ).

  DATA obj_test TYPE REF TO lcl_test.
  CREATE OBJECT obj_test.
  SET HANDLER lcl_event_handler=>on_event FOR obj_test.

  obj_test->set_info( 'hello' ).
  obj_test->display_info( ).
  obj_test->lif_test~display_info( ).

  SKIP 2.
  WRITE:/ 'Sub Class'.
  DATA obj_test_sub TYPE REF TO lcl_test_sub.
  CREATE OBJECT obj_test_sub.
  obj_test_sub->display_sub( ).

分享到:
评论

相关推荐

    interface_impl

    这里是go语言学习笔记4中关于接口的练习,读者可以参考着,自己体会体会。

    JAVA的impl实现层

    "JAVA实现DAO层和业务逻辑的impl实现层" 在JAVA中,实现DAO层和业务逻辑是非常重要的部分。impl实现层是指在业务逻辑层和持久层之间的桥梁,负责将业务逻辑转换为数据库操作。下面我们将详细介绍impl实现层的实现...

    开发工具 taglibs-standard-impl-1.2.5

    开发工具 taglibs-standard-impl-1.2.5开发工具 taglibs-standard-impl-1.2.5开发工具 taglibs-standard-impl-1.2.5开发工具 taglibs-standard-impl-1.2.5开发工具 taglibs-standard-impl-1.2.5开发工具 taglibs-...

    jaxb-impl-2.1.13.jar

    jaxb-impl-2.1.13.jar

    win_impl.rar_event_sunwindow

    标题“win_impl.rar_event_sunwindow”暗示我们正在讨论与Windows实现相关的特定库,特别是与太阳窗口(SunWindow)事件管理有关的私有数据结构。在Windows操作系统中,事件管理是图形用户界面(GUI)编程的核心部分...

    Accp6.0_S2.使用Java实现面向对象编程【答案】

    interface A{ int x=0; } class B{ int x=1; } public class C extends B implements A{ public void pX(){ System.out.println(super.x); } public static void main(String[] args){ new C().pX(); }

    jstl-impl-1.2.jar.rar_ jstl-impl-1.2.jar _jstl-impl-1.2_jstl-imp

    标题中的"jstl-impl-1.2.jar.rar"是一个压缩文件,它包含了"jstl-impl-1.2.jar"这个JAR包,这通常与Java Web开发相关,特别是与JSP(JavaServer Pages)技术紧密相连。JSTL(JavaServer Pages Standard Tag Library...

    jaxb-impl-2.1.jar

    jaxb-impl-2.1.jar

    jstl-impl-1.2.jar

    jstl-api-1.2、jstl-impl-1.2.jar标签包,两份。

    jaxb-impl.jar包

    **jaxb-impl.jar包详解** `jaxb-impl.jar`是Java Architecture for XML Binding (JAXB)的一个实现包,它是Java平台标准版(Java SE)和企业版(Java EE)的一部分,主要用于XML到Java对象的绑定以及反之,使得...

    avalon-framework-impl-4.3.1-API文档-中文版.zip

    赠送jar包:avalon-framework-impl-4.3.1.jar; 赠送原API文档:avalon-framework-impl-4.3.1-javadoc.jar; 赠送源代码:avalon-framework-impl-4.3.1-sources.jar; 赠送Maven依赖信息文件:avalon-framework-impl...

    cap_ffmpeg_impl.hpp

    通过查看make过程中的错误知道,问题出在OpenCV-2.3.0/modules/highgui/src/cap_ffmpeg_impl.hpp文件中, 参考 https://code.ros.org/trac/opencv/ticket/1020 中 ffmpeg_build.patch 和 ffmpeg_build_2.patch 对 ...

    jstl-impl-1.2.2.jar

    jstl-impl-1.2.2.jar!

    jaxb-impl-2.0.3

    jaxb-impl-2.0.3.jar 可用包

    impl, impl生成用于实现接口的方法存根.zip

    impl, impl生成用于实现接口的方法存根 impl 生成用于实现接口的方法存根。go get -u github.com/josharian/impl示例用法:$ impl 'f *File' io.ReadWriteCloserfunc (f *File

    jjwt-impl-0.11.2-API文档-中英对照版.zip

    赠送jar包:jjwt-impl-0.11.2.jar; 赠送原API文档:jjwt-impl-0.11.2-javadoc.jar; 赠送源代码:jjwt-impl-0.11.2-sources.jar; 赠送Maven依赖信息文件:jjwt-impl-0.11.2.pom; 包含翻译后的API文档:jjwt-impl-...

    jaxb-impl-2.3.0.jar

    有关Maven项目中缺少jaxb-api的异常报错解决,jaxb-impl-2.3.0.jar

    log4j-slf4j-impl-2.12.1-API文档-中文版.zip

    赠送jar包:log4j-slf4j-impl-2.12.1.jar; 赠送原API文档:log4j-slf4j-impl-2.12.1-javadoc.jar; 赠送源代码:log4j-slf4j-impl-2.12.1-sources.jar; 赠送Maven依赖信息文件:log4j-slf4j-impl-2.12.1.pom; ...

    jsf-impl源码

    jsf-impl-1.2_12 源码 jar

    OpenH264 & h264_impl for webrtc iOS

    OpenH264与h264_impl是WebRTC(Web Real-Time Communication)在iOS平台上实现H264编解码的关键组件。OpenH264是一个开源的H264编码库,由思科系统(Cisco Systems)开发并维护,它提供了高效的视频编码功能,广泛...

Global site tag (gtag.js) - Google Analytics