د ABAP پروګرام کې کاسټ کول

د A1 ټولګي تعریف.
 عامه برخه.
 ډاټا: شمیره 1 ډول او ارزښت 100.
 میتودونه: m1.
 پای کلاس.
 د 1 ټولګي پلي کول.
 میتود m1.
 ولیکئ: 'a1:'، 1 شمیره.
 ENDMETHOD.
 پای کلاس.
 د B1 ټولګي تعریف له a1 څخه میراث.
 عامه برخه.
 میتودونه: m2, m1 بیا تعریف.
 پای کلاس.
 د B1 ټولګي پلي کول.
 میتود m1.
 num1 = num1 .
 ولیکئ: 'b1:'، 1 شمیره.
 ENDMETHOD.
 میتود m2.
 ولیکئ: 'M2 په B1 ټولګي کې'.
 ENDMETHOD.
 پای کلاس.
 د انتخاب پیل.
 ډاټا: a1 ته د ریف ډول ډول.
 ډاټا: b ټایپ ریف ته b1.
 *ډاټا: c ډول REF TO c1.
 ****************************************************** ************** هدف جوړ کړئ ب.
 a = ب.  د زنګ وهلو میتود a->m1( ).
 * METHOD a->m2( ) ته زنګ ووهئ.  "موږ نشو کولی د سوپر کلاس ریف په کارولو سره خپل فرعي ټولګي میتودونو ته لاسرسی ومومئ.
 نوی لاین.
 b؟= a.  "د کاسټ کولو کال میتود b->m1( ).
 نوی لاین.
 د زنګ وهلو طریقه b->m2( ).
 ****************************************************** *************** " تېروتنه null ref create OBJECT a.
 b؟= a.  "ډاون کاسټینګ لاهم د ډمپ کال ورکولو میتود b->m1( ).
 ****************************************************** *************** هدف جوړ کړئ a.
 هڅه وکړئ.
 b؟= a.  "تاسو د 'NULL' اعتراض ریفرنس ډمپ CATCH cx_sy_move_cast_error کارولو هڅه کړې.
 د زنګ وهلو طریقه b->m1( ).
 ENDTRY
 ****************************************************** *************** هدف جوړ کړئ a.
 د هدف جوړول ب.
 هڅه وکړئ.
 b؟= a.
 CATCH cx_sy_move_cast_error.
 د زنګ وهلو طریقه b->m1( ).
 زنګ طریقه b->m2().
 ENDTRY
 کلاس lcl_shape تعریف.
 عامه برخه.
 میتودونه رسمول.
 پای کلاس.
 کلاس lcl_circle تعریف له lcl_shape څخه میراث کول.
 عامه برخه.
 میتودونه: REDEFINITION رسم کړئ، calc_rea.
 پای کلاس.
 CLASS lcl_shape پلي کول.
 د رسم کولو طریقه
 ولیکئ:/ 'د هر ډول شکل رسم کول'.
 ENDMETHOD.
 پای کلاس.
 CLASS lcl_circle پلي کول.
 د رسم کولو طریقه
 ولیکئ :/ 'ځانګړي شکل رسم کول: دایره'.
 ENDMETHOD.
 میتود حساب_ساحه.
 ولیکئ :/ 'Area of ​​Crcle = 2iiR'.
 ENDMETHOD.
 پای کلاس.
 د انتخاب پیل.
 ډاټا: o_cir د lcl_circle ته د ریف ټایپ کړئ.
 CREATE O_CIR.
 د کال طریقه o_cir->draw( ).  د فرعي کلاس Draw() ميتود د CALL METHOD o_cir->calc_area( ).
 ULINE.
 "--------- تنګ کاسټ(اپکاسټ)---------------" ډاټا: o_shp ټایپ ریف ته lcl_shape.
 o_shp = o_cir.  تنګ کاسټ (اپکاسټ) د کال طریقه o_shp->draw( ).  "د فرعي ټولګي Draw() ميتود ته زنګ وهي" METHOD o_shp->calc_area( ) ته زنګ ووهئ.  د تالیف تېروتنه ULINE.
 "------------ پراخوالی کاسټ(ډاونکاسټ) -----------" ډاټا: o_cir1 lcl_circle ته د ریف ټایپ کړئ.
 " o_cir1 = o_shp.  د تالیف تېروتنه o_cir1 ?= o_shp.  د کاسټ پراخول(ډاونکاسټ) د کال طریقه o_cir1->draw( ).  د فرعي کلاس Draw() ميتود د CALL METHOD o_cir1->calc_area( ).
 د A1 ټولګي تعریف.
 عامه برخه.
 ډاټا: شمیره 1 ډول او ارزښت 100.
 میتودونه: m1.
 پای کلاس.
 د 1 ټولګي پلي کول.
 میتود m1.
 ولیکئ: 'a1:'، 1 شمیره.
 ENDMETHOD.
 پای کلاس.
 د B1 ټولګي تعریف له a1 څخه میراث.
 عامه برخه.
 میتودونه: m2, m1 بیا تعریف.
 پای کلاس.
 د B1 ټولګي پلي کول.
 میتود m1.
 num1 = num1 .
 ولیکئ: 'b1:'، 1 شمیره.
 ENDMETHOD.
 میتود m2.
 ولیکئ: 'M2 په B1 ټولګي کې'.
 ENDMETHOD.
 پای کلاس.
 د انتخاب پیل.
 ډاټا: د مور او پلار ډول a1 ته ریف.
 ډاټا: د ماشوم ټایپ REF ته b1.
 *ډاټا: c ډول REF TO c1.
 ****************************************************** ************** د ماشوم هدف جوړ کړئ.
 پلار = ماشوم.  د کال طریقې والدین->m1( ).
 ماشوم ته د زنګ وهلو طریقه->m1().
 ماشوم ته د زنګ وهلو طریقه->m2().
 * METHOD a->m2( ) ته زنګ ووهئ.  "موږ نشو کولی د سوپر کلاس ریف په کارولو سره خپل فرعي ټولګي میتودونو ته لاسرسی ومومئ.
 نوی لاین.
 ماشوم؟= مور او پلار.  د کال میتود ماشوم->m1().
 نوی لاین.
 ماشوم ته د زنګ وهلو طریقه->m2().
 ****************************************************** ********************" تېروتنه null ref * د اعتراض جوړول.
 *ب؟= a.  "ډاون کاسټینګ لاهم د دې ورکونکي ډمپ * METHOD b->m1( ) ته زنګ وهي.
 ****************************************************** ****************** هدف جوړ کړئ a.
 هڅه وکړئ.
 b؟= a.  "تاسو د 'NULL' اعتراض ریفرنس ډمپ CATCH cx_sy_move_cast_error کارولو هڅه کړې.
 د زنګ وهلو طریقه b->m1( ).
 ENDTRY
 ****************************************************** ****************** هدف جوړ کړئ a.
 د هدف جوړول ب.
 هڅه وکړئ.
 b؟= a.
 CATCH cx_sy_move_cast_error.
 د زنګ وهلو طریقه b->m1( ).
 زنګ طریقه b->m2().
 ENDTRY
 ******** ځانګړي ارزښتونه****************** ډاټا: lv_string TYPE string, lv_string2 TYPE string, lv_string_final TYPE string.
 TYPES: د ty_data پیل، د لیکلو ټایپ ج، د ty_data پای.
 ډاټا: ls_user TYPE ty_data، ls_user2 TYPE ty_data، lt_user2 TYPE ty_data، lt_user TYPE ty_data جدول.
 lv_string = 'a,b,c,a'.
 lv_string2 = 'd,b,c,a'.
 SPLIT lv_string AT ',' INTO TABLE lt_user.
 SPLIT lv_string2 AT ',' INTO TABLE lt_user2.
 لوپ AT lt_user2 د فیلډ سمبول ( ).
 داخل کړئ په جدول کې lt_user.
 ENDLOOP.
 SORT lt_user by auth.
 د lt_user د پرتله کولو سند څخه نږدې نقلونه حذف کړئ.
 IF sy-subrc = 0.
 لوپ AT lt_user د فیلډ سمبول ( ).
 که lv_string_final ابتدايي وي.
 lv_string_final = -لیکنه
 بل.
 CONCATENATE lv_string_final -د lv_string_final لخوا جلا شوی د '،' په اړه auth.
 ENDIF.
 ENDLOOP.
 ENDIF.

 

خپل نظر ورکړۍ

دا سایټ د سپیم کمولو لپاره Akismet کاروي. زده کړئ چې ستاسو د تبصرې ډاټا پراساس پروسس کیږي.