ABAP接口用法

1、定义接口
INTERFACE intf [PUBLIC].
  [components]
ENDINTERFACE.

2、注意点:

2.1、接口中所定义的所有东西默认都是公共的,所以不用也不能写PUBLIC SECTION。

2.2、只有在接口中定义的常量(CONSTANTS)才可以使用 VALUE 选项来初始化,而DATA、CLASS-DATA定义的变量是不能初始化

2.3、接口定义中也只能包含成员声明部分,而具体的实现将在具体类中进行

2.4、如果要实现某个接口,则在类的公共声明PUBLIC SECTION部分进行实现,其余部分不行

3、定义一个接口 MediaPlayer,表示家庭影院的一个设备。MediaPlayer 中包含 play(),stop(), open()三个方法,分别表示播放、停止和开仓功能。
MediaPlayer 有三个实现类,分别为: DVDPlayer,表示 DVD 播放器; CDPlayer,表示 CD 播放器;TapePlayer,表示录音机(播放磁带)。

INTERFACE mediaplayer.
  CONSTANTS pi TYPE f VALUE '3.1415926'.
  CLASS-DATA dd type f .
  METHODS: play,stop,open.
ENDINTERFACE.

CLASS dvdplayer DEFINITION.
  PUBLIC SECTION.
    INTERFACES mediaplayer.
ENDCLASS.

CLASS dvdplayer IMPLEMENTATION.
   METHOD mediaplayer~play.
      WRITE / 'dvd is play'.
   ENDMETHOD.
   METHOD mediaplayer~stop.
      WRITE / 'dvd is stop'.
   ENDMETHOD.
   METHOD mediaplayer~open.
      WRITE / 'dvd is open'.
   ENDMETHOD.
ENDCLASS.

CLASS cdplayer DEFINITION.
  PUBLIC SECTION.
    INTERFACES mediaplayer.
ENDCLASS.
CLASS cdplayer IMPLEMENTATION.
   METHOD mediaplayer~play.
      WRITE / 'cd is play'.
   ENDMETHOD.
   METHOD mediaplayer~stop.
      WRITE / 'cd is stop'.
   ENDMETHOD.
   METHOD mediaplayer~open.
      WRITE / 'cd is open'.
   ENDMETHOD.
ENDCLASS.

CLASS tapeplayer DEFINITION.
  PUBLIC SECTION.
    INTERFACES mediaplayer.
ENDCLASS.
CLASS tapeplayer IMPLEMENTATION.
   METHOD mediaplayer~play.
      WRITE / 'tape is play'.
   ENDMETHOD.
   METHOD mediaplayer~stop.
      WRITE / 'tape is stop'.
   ENDMETHOD.
   METHOD mediaplayer~open.
      WRITE / 'tape is open'.
   ENDMETHOD.
ENDCLASS.

*声明对象
DATA: dvd TYPE REF TO dvdplayer,
      cd TYPE REF TO cdplayer,
      tape TYPE REF TO tapeplayer.


START-OF-SELECTION.

CREATE OBJECT dvd.
CREATE OBJECT cd.
CREATE OBJECT tape.

CALL METHOD dvd->mediaplayer~play.

CALL METHOD cd->mediaplayer~stop.

CALL METHOD tape->mediaplayer~open.

write / dvd->mediaplayer~pi.
write / dvd->mediaplayer~dd.

dvd->mediaplayer~dd = 1.

write / dvd->mediaplayer~dd.
原文地址:https://www.cnblogs.com/miaosj/p/10338614.html