mengyuxin

Interface

Apr 18th, 2021
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 3.72 KB | None | 0 0
  1. *&---------------------------------------------------------------------*
  2. *& Report ZMENG_INTERFACE
  3. *&---------------------------------------------------------------------*
  4. *&  sap_abap/sap_abap_interfaces.html
  5. *&---------------------------------------------------------------------*
  6. *类似于ABAP中的类,接口充当对象的数据类型。 接口的组件与类的组件相同。
  7. *与类的声明不同,接口的声明不包括可见性部分。
  8. *这是因为在接口声明中定义的组件总是集成在类的public visibility部分。
  9. *
  10. *当两个类似的类具有相同名称的方法但功能彼此不同时,使用接口。
  11. *接口可能看起来类似于类,但是接口中定义的函数在类中实现以扩展该类的范围。
  12. *接口以及继承特性为多态性提供了基础。
  13. *这是因为在接口中定义的方法在不同类中的行为可能不同。
  14. *
  15. *以下是创建接口的一般格式:
  16. *
  17. *INTERFACE <intf_name>.
  18. *  DATA.....
  19. *  CLASS-DATA.....
  20. *  METHODS.....
  21. *  CLASS-METHODS.....
  22. *ENDINTERFACE.
  23.  
  24. *在此语法中,< intf_name> 表示接口的名称。
  25. *DATA和CLASSDATA语句可以分别用于定义接口的实例和静态属性。
  26. *METHODS和CLASS-METHODS语句可以分别用于定义接口的实例和静态方法。
  27. *由于接口的定义不包括实现类,因此没有必要在接口的声明中添加DEFINITION子句。
  28. *
  29. *注意 - 接口的所有方法都是抽象的。 它们是完全声明的,包括它们的参数接口,
  30. *但是没有在接口中实现。 所有想要使用接口的类都必须实现接口的所有方法。
  31. *否则,该类将成为抽象类。
  32. *&---------------------------------------------------------------------*
  33.  
  34. REPORT zmeng_10_interface.
  35.  
  36. *&---------------------------------------------------------------------*
  37. *& Interface
  38. *&---------------------------------------------------------------------*
  39. INTERFACE my_interface1.
  40.   METHODS msg.
  41. ENDINTERFACE.
  42.  
  43. *&---------------------------------------------------------------------*
  44. *& Class: num_counter
  45. *&---------------------------------------------------------------------*
  46. CLASS num_counter DEFINITION.
  47.   PUBLIC SECTION.
  48.     INTERFACES my_interface1.
  49.     METHODS add_number.
  50.  
  51.   PRIVATE SECTION.
  52.     DATA num TYPE i.
  53. ENDCLASS.
  54.  
  55. CLASS num_counter IMPLEMENTATION.
  56.   METHOD my_interface1~msg.
  57.     WRITE: / 'The number is', num.
  58.     ENDMETHOD.
  59.  
  60.   METHOD add_number.
  61.     ADD 7 TO num.
  62.   ENDMETHOD.
  63.  
  64. ENDCLASS.
  65.  
  66. *&---------------------------------------------------------------------*
  67. *& Class: drive1
  68. *&---------------------------------------------------------------------*
  69. CLASS drive1 DEFINITION.
  70.   PUBLIC SECTION.
  71.     INTERFACES my_interface1.
  72.     METHODS speed1.
  73.  
  74.   PRIVATE SECTION.
  75.     DATA wheel1 TYPE i.
  76. ENDCLASS.
  77.  
  78. CLASS drive1 IMPLEMENTATION.
  79.   METHOD my_interface1~msg.
  80.     WRITE: / 'Total number of wheels is', wheel1.
  81.   ENDMETHOD.
  82.  
  83.   METHOD speed1.
  84.     ADD 4 TO wheel1.
  85.   ENDMETHOD.
  86. ENDCLASS.
  87.  
  88. *&---------------------------------------------------------------------*
  89. *& Start of selection
  90. *&---------------------------------------------------------------------*
  91. START-OF-SELECTION.
  92.   DATA object1 TYPE REF TO num_counter.
  93.  
  94.   CREATE OBJECT object1.
  95.  
  96.   CALL METHOD object1->add_number.
  97.   CALL METHOD object1->my_interface1~msg.
  98.  
  99.  
  100.   DATA object2 TYPE REF TO drive1.
  101.  
  102.   CREATE OBJECT object2.
  103.  
  104.   CALL METHOD object2->speed1.
  105.   CALL METHOD object2->my_interface1~msg.
  106.  
  107.  
  108. * Output result
  109. *The number is          7
  110. *Total number of wheels is          4
  111.  
Add Comment
Please, Sign In to add comment