" 使用接口引用作为内表行类型 DATA: lt_partners TYPE TABLE OF REF TO lif_partner.
" 收集不同类型的业务伙伴 APPEND NEW lcl_hotel( ) TO lt_partners. " 自动 up-cast APPEND NEW lcl_rental( ) TO lt_partners. " 自动 up-cast APPEND NEW lcl_carrier( ) TO lt_partners. " 自动 up-cast
" 统一处理 — 多态! LOOP AT lt_partners INTO DATA(lo_p). lo_p->display_partner( ). lo_p->check_availability( iv_date = sy-datum ). ENDLOOP.
Down-cast with Interfaces
当需要访问实现类的特有组件时:
1 2 3 4 5 6 7 8
DATA: lo_hotel TYPE REF TO lcl_hotel, lo_partner TYPE REF TO lif_partner.
CLASS lcl_travel_agency DEFINITION. PUBLIC SECTION. METHODS: add_partner IMPORTING io_partner TYPE REF TO lif_partner. PRIVATE SECTION. DATA: mt_partners TYPE TABLE OF REF TO lif_partner. ENDCLASS.