Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- report zrep_obj_local.
- class lcl_parent definition.
- public section.
- methods
- : parent_method
- .
- endclass.
- class lcl_parent implementation.
- method parent_method.
- write :/ |Parent method|.
- endmethod.
- endclass.
- *--------------------------------------------------------------------*
- class lcl_child definition inheriting from lcl_parent.
- public section.
- methods
- : parent_method redefinition
- , child_method
- .
- endclass.
- class lcl_child implementation.
- method child_method.
- write :/ |My own child method|.
- endmethod.
- method parent_method.
- write :/ |Redefined parent method|.
- endmethod.
- endclass.
- start-of-selection.
- data
- : lo_parent type ref to lcl_parent
- , lo_child type ref to lcl_child
- .
- create object
- : lo_parent
- , lo_child
- .
- lo_parent->parent_method( ).
- lo_child->child_method( ).
- lo_child->parent_method( ).
- * upcast, сужение ракусра
- write :/ |*upcast, сужение ракусра|.
- lo_parent = lo_child.
- lo_parent->parent_method( ). "вызывается реализация в lcl_child
- * lo_parent->child_method( ). "дочерний метод недоступен для вызова при upcast-присвоении
- clear
- : lo_parent
- , lo_child
- .
- create object
- : lo_parent
- , lo_child
- .
- lo_parent = lo_child.
- * downcast расширение, оба метода доступны в одном объекте -> расширение ракурса:
- write :/ |*downcast, расширение ракусра|.
- DATA(lo_child2) = NEW lcl_child( ).
- * lo_child2 = lo_parent. "нельзя присваивать, ошибка при компиляции
- lo_child2 ?= lo_parent.
- lo_child2->parent_method( ). "Конечно, вызывается реализация в lcl_child
- lo_child2->child_method( ).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement