A constructor is a special method automatically called when an object is created using CREATE OBJECT or NEW.
Types of Constructors in ABAP
Type | Method Name | Called On | Purpose |
---|---|---|---|
Instance Constructor | CONSTRUCTOR |
When an object is created (NEW or CREATE OBJECT ) |
To initialize instance-specific data |
Class Constructor | CLASS_CONSTRUCTOR |
When the class is first used | To initialize class-level (static) data |
REPORT zrep_lclclass.
CLASS zcl_demo DEFINITION.
PUBLIC SECTION.
METHODS: constructor, " Instance constructor
display_instance_value.
CLASS-METHODS: class_constructor, " Class constructor
display_class_value.
PRIVATE SECTION.
DATA: lv_instance_val TYPE string.
CLASS-DATA: gv_class_val TYPE string.
ENDCLASS.
CLASS zcl_demo IMPLEMENTATION.
" Instance Constructor
METHOD constructor.
lv_instance_val = 'Initialized in CONSTRUCTOR'.
WRITE: / '>> Instance CONSTRUCTOR called'.
ENDMETHOD.
" Class Constructor
METHOD class_constructor.
gv_class_val = 'Initialized in CLASS_CONSTRUCTOR'.
WRITE: / '>> CLASS_CONSTRUCTOR called (only once)'.
ENDMETHOD.
METHOD display_instance_value.
WRITE: / 'Instance value:', lv_instance_val.
ENDMETHOD.
METHOD display_class_value.
WRITE: / 'Class value:', gv_class_val.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
* Access class method (triggers class constructor first time)
zcl_demo=>display_class_value( ).
SKIP.
* Create object (triggers instance constructor)
DATA(lo_obj1) = NEW zcl_demo( ).
lo_obj1->display_instance_value( ).
SKIP.
* Create another object (instance constructor runs again, but not class constructor)
DATA(lo_obj2) = NEW zcl_demo( ).
lo_obj2->display_instance_value( ).
SKIP.
* Access class method again (class constructor NOT triggered again)
zcl_demo=>display_class_value( ).
Output: