How to solve Dynamic method call error in SAP ABAP such as method does not exist

ZIF_DYNAMIC_INTERFACE
public .
METHODS get_class_object
RETURNING
VALUE(rr_class_object) TYPE REF TO ztc_check_Cls.
ENDINTERFACE.

CLASS ztc_check_cls DEFINITION
PUBLIC
CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES zif_dynamic_interface.
CLASS-METHODS get_interface_object
RETURNING
VALUE(rr_interface_object) TYPE REF TO zif_dynamic_interface.
METHODS get_instance_variable
RETURNING VALUE(rv_instance_variable) TYPE i.
PROTECTED SECTION.
PRIVATE SECTION.
DATA m_instance_variable TYPE i.
ENDCLASS.

CLASS ztc_check_cls IMPLEMENTATION.
METHOD get_interface_object.
rr_interface_object = NEW ztc_check_cls( ).
ENDMETHOD.
METHOD get_instance_variable.
m_instance_variable = 10.
rv_instance_variable = m_instance_variable
ENDMETHOD.
METHOD zif_dynamic_interface~get_class_object.
rr_class_object = NEW ztc_check_cls( ).
ENDMETHOD.
ENDCLASS.

METHOD test.
DATA ls_ptab TYPE abap_parmbind.
DATA lt_ptab TYPE abap_parmbind_tab.
DATA lr_ztc_check cls TYPE REF TO object.
DATA lr_zif_dynamic_interface TYPE REF TO DATA.
DATA lv_class_instance_value TYPE i.

CREATE DATA lr_zif_dynamic_interface TYPE REF TO (‘ZIF_DYNAMIC_INTERFACE’).
ls_ptab-name = ( ‘RR_INTERFACE_OBJECT. ).
ls_ptab-kind = cl_abap_objectdescr=>returning.
ls_ptab-value = lr_zif_dynamic interface.
INSERT ls_ptab INTO TABLE lt_ptab.
CALL METHOD (‘ZTC_CHECK_CLS’)=>(‘GET_INTERFACE_OBJECT’)
PARAMETER-TABLE lt_ptab.

clear lt_ptab.
clear ls_ptab.
Is_ptab-name = ( ‘rv_instance variable value’ ).
Is_ptab-kind = cl_abap_objectdescr=>returning
ls_ptab-value = REF #( lv_class_instance_value ).
INSERT ls_ptab INTO TABLE lt_ptab.
lr_ztc_check_cls = CAST #( lr_zif_dynamic_interface->* ).
CALL METHOD lr_ztc_check_cls->(‘GET_INSTANCE_VARIABLE’) =============> ERROR HERE
PARAMETER-TABLE lt_ptab.
cl_abap_unit_assert=>assert_equals( act = lv_class_instance_value
exp = 10 ).
ENDMETHOD.

EXPLANATION: lr_ztc_check_cls is generic type ref to object, even if it typed to ZTC_CHECK_CLS ===> DATA lr_ztc_check_cls TYPE REF TO ztc_check_cls.
There will be no change in the result.

SOLUTION:
an object must be initially created for the class, then the casting must be done from interface to class.
CREATE OBJECT lr_ztc_check_cls TYPE (‘ZTC_CHECK_CLS’).
lr_ztc_check_cls = CAST #( lr_zif_dynamic_interface->* ).
CALL METHOD lr_ztc_check_cls->(‘GET_INSTANCE_VARIABLE’)
PARAMETER-TABLE lt_ptab.