面向对象实例

REPORT ZTEST005.
*----------------------------------------------------------------------*
*       CLASS person DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS PERSON DEFINITION.
  PUBLIC SECTION.
    METHODS: CONSTRUCTOR
             IMPORTING ID TYPE STRING NAME TYPE STRING,
             GET_ID RETURNING VALUE(ID) TYPE STRING,
             GET_NAME RETURNING VALUE(NAME) TYPE STRING,
             LEARN.
  PROTECTED SECTION.
    DATA: ID TYPE STRING,
          NAME TYPE STRING.
ENDCLASS.                    "person DEFINITION

*----------------------------------------------------------------------*
*       CLASS teacher DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS TEACHER DEFINITION INHERITING FROM PERSON.
  PUBLIC SECTION.
    METHODS:TEACH,LEARN REDEFINITION.
  PROTECTED SECTION.
    DATA COURSE TYPE STRING VALUE 'Java & ABAP'.
ENDCLASS.                    "teacher DEFINITION

*----------------------------------------------------------------------*
*       CLASS student DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS STUDENT DEFINITION INHERITING FROM PERSON.
  PUBLIC SECTION.
    METHODS: PLAY,LEARN REDEFINITION.
  PROTECTED SECTION.
    DATA COURSE TYPE STRING VALUE 'Java & ABAP'.
ENDCLASS.                    "student DEFINITION

*----------------------------------------------------------------------*
*       CLASS person IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS PERSON IMPLEMENTATION.
  METHOD CONSTRUCTOR.
    ME->ID = ID.
    ME->NAME = NAME.
  ENDMETHOD.                    "constructor

  METHOD GET_ID.
    ID = ME->ID.
  ENDMETHOD.                    "get_id

  METHOD GET_NAME.
    NAME = ME->NAME.
  ENDMETHOD.                    "get_name

  METHOD LEARN.
    WRITE: /  'A person can learn'.
  ENDMETHOD.                    "learn
ENDCLASS.                    "person IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS teacher IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS TEACHER IMPLEMENTATION.
  METHOD TEACH.
    WRITE: / 'I am teacher' , NAME, 'I can teach', COURSE.
  ENDMETHOD .                   "teach
  METHOD LEARN.
    WRITE: / 'I am teacher', NAME, 'I learn all by myself'.
  ENDMETHOD.                    "learn
ENDCLASS.                    "teacher IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS student IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS STUDENT IMPLEMENTATION.
  METHOD PLAY.
    WRITE: / 'I am student', NAME, 'I often play games'.
  ENDMETHOD.                    "play
  METHOD LEARN.
    WRITE: / 'I am student', NAME,
             'I learn  ', COURSE,
             'from the teaher'.
  ENDMETHOD.                    "learn
ENDCLASS.                    "student IMPLEMENTATION

DATA: TEACHER_REF TYPE REF TO TEACHER,
      STUDENT_REF TYPE REF TO STUDENT.

START-OF-SELECTION.
  CREATE OBJECT:
     TEACHER_REF EXPORTING ID = 'T001' NAME = 'Bob',
     STUDENT_REF EXPORTING ID = 'S002' NAME = 'Yom'.

  CALL METHOD : TEACHER_REF->TEACH,
                TEACHER_REF->LEARN,
                STUDENT_REF->PLAY,
                STUDENT_REF->LEARN.


关键词: ABAP

网友评论

发表评论