아무래도 코드를 보시면서 이해하시는게 좋을 거 같네요
간단한 예제프로그램 보시고 이해하세요.
개념은 답변하신 분이 잘 말씀해주셔서 더 이상 말씀드릴 게 없는거 같구요.
궁금하신 사항은 제가 원문에다가 답글 달아 드렸습니다.
참고하세요.
*&---------------------------------------------------------------------*
*& Report ZLER9996 *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ZLER9996 .
* Class Declarations
CLASS vehicle DEFINITION INHERITING FROM object.
PUBLIC SECTION.
METHODS: accelerate,
write_status.
PROTECTED SECTION.
DATA speed TYPE i.
ENDCLASS.
CLASS plane DEFINITION INHERITING FROM vehicle.
PUBLIC SECTION.
METHODS: rise,
write_status REDEFINITION.
PROTECTED SECTION.
DATA altitude TYPE i.
ENDCLASS.
CLASS ship DEFINITION INHERITING FROM vehicle.
PUBLIC SECTION.
METHODS write_status REDEFINITION.
ENDCLASS.
* Class Implementations
CLASS vehicle IMPLEMENTATION.
METHOD accelerate.
speed = speed + 1.
ENDMETHOD.
METHOD write_status.
WRITE: / 'Speed:', speed.
ENDMETHOD.
ENDCLASS.
CLASS plane IMPLEMENTATION.
METHOD rise.
altitude = altitude + 1.
ENDMETHOD.
METHOD write_status.
WRITE / 'Plane:'.
CALL METHOD super->write_status.
WRITE: / 'Altitude:', altitude.
ENDMETHOD.
ENDCLASS.
CLASS ship IMPLEMENTATION.
METHOD write_status.
WRITE: / 'Ship speed:', speed.
ENDMETHOD.
ENDCLASS.
* Global Data
DATA: plane_ref TYPE REF TO plane,
ship_ref TYPE REF TO ship.
* Classical Processing Blocks
START-OF-SELECTION.
CREATE OBJECT: plane_ref,
ship_ref.
CALL METHOD: plane_ref->accelerate,
plane_ref->rise,
plane_ref->write_status,
ship_ref->accelerate,
ship_ref->write_status.
결과 값은 아시는대로
Plane:
Speed: 1
Altitude: 1
Ship speed: 1
형태로 출력됩니다.
백문이 불여일견이라 한번 위의 코딩대로 한번
이해해보세요.
간단한 예제프로그램 보시고 이해하세요.
개념은 답변하신 분이 잘 말씀해주셔서 더 이상 말씀드릴 게 없는거 같구요.
궁금하신 사항은 제가 원문에다가 답글 달아 드렸습니다.
참고하세요.
*&---------------------------------------------------------------------*
*& Report ZLER9996 *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ZLER9996 .
* Class Declarations
CLASS vehicle DEFINITION INHERITING FROM object.
PUBLIC SECTION.
METHODS: accelerate,
write_status.
PROTECTED SECTION.
DATA speed TYPE i.
ENDCLASS.
CLASS plane DEFINITION INHERITING FROM vehicle.
PUBLIC SECTION.
METHODS: rise,
write_status REDEFINITION.
PROTECTED SECTION.
DATA altitude TYPE i.
ENDCLASS.
CLASS ship DEFINITION INHERITING FROM vehicle.
PUBLIC SECTION.
METHODS write_status REDEFINITION.
ENDCLASS.
* Class Implementations
CLASS vehicle IMPLEMENTATION.
METHOD accelerate.
speed = speed + 1.
ENDMETHOD.
METHOD write_status.
WRITE: / 'Speed:', speed.
ENDMETHOD.
ENDCLASS.
CLASS plane IMPLEMENTATION.
METHOD rise.
altitude = altitude + 1.
ENDMETHOD.
METHOD write_status.
WRITE / 'Plane:'.
CALL METHOD super->write_status.
WRITE: / 'Altitude:', altitude.
ENDMETHOD.
ENDCLASS.
CLASS ship IMPLEMENTATION.
METHOD write_status.
WRITE: / 'Ship speed:', speed.
ENDMETHOD.
ENDCLASS.
* Global Data
DATA: plane_ref TYPE REF TO plane,
ship_ref TYPE REF TO ship.
* Classical Processing Blocks
START-OF-SELECTION.
CREATE OBJECT: plane_ref,
ship_ref.
CALL METHOD: plane_ref->accelerate,
plane_ref->rise,
plane_ref->write_status,
ship_ref->accelerate,
ship_ref->write_status.
결과 값은 아시는대로
Plane:
Speed: 1
Altitude: 1
Ship speed: 1
형태로 출력됩니다.
백문이 불여일견이라 한번 위의 코딩대로 한번
이해해보세요.
댓글 5
-
홍성종
2007.02.06 22:32
-
구본찬
2007.02.07 00:08
예 맞습니다.
METHOD write_status.
WRITE / 'Plane:'.
CALL METHOD super->write_status.
WRITE: / 'Altitude:', altitude.
ENDMETHOD.
이미 재정의된 메소드 안에서 부모 클래스의 메소드를 호출한거지요.
-
홍성종
2007.02.07 00:11
아~~~이제 이해가 가는거 같습니다..
객체라는 부분도 어려운데 이걸 ABAP에 적용하면서 이해할려구 하니깐 더 어렵게 느껴지는거 같습니다..
앞으로도 이런 조언 부탁드립니다~~ -
sincere
2008.09.05 19:40
초급도 이해가 안되는.. -0-
-
해창이아빠
2009.02.10 13:18
좋은 정보 감사합니다
역시 백문이 불여일타라고 해서 한번 쳐보니깐 로직이 이해가 됩니다~~^^ㅎㅎ
그런데요 부모클래스에서 write_status는 1이나오는데
plane의 자식클래스에서 super->wirte_status 즉 부모의 write_status를 이용해서 값을 출력하라는게 아닌가요??
왜 아무런 값이 안나오는걸까요?? 혹시 부모클래스에서 write_status는 speed라는 data를 이용하여 값을 출력해 주는
method일뿐이라서 그런건가요??
그런데 ship의 자식클래스에서는 그냥 상속받아서....
아! Redefine이라는게 부모클래스에서는 wirte문에서 Speed라고 했고 ship자식클래스는 고대로 상속받아서
write문에서 Ship speed라고 문장을 고쳤는데 이것을 말하는건가요??ㅎㅎ
감사합니다~~