ABAP പ്രോഗ്രാമിലെ കാസ്റ്റിംഗ്

ക്ലാസ് എ 1 നിർവ്വചനം.
 പൊതുവിഭാഗം.
 ഡാറ്റ: നമ്പർ1 തരം i മൂല്യം 100.
 രീതികൾ:m1.
 അവസാനക്ലാസ്.
 ക്ലാസ് a1 നടപ്പിലാക്കൽ.
 രീതി m1.
 എഴുതുക: 'a1:',num1.
 അവസാന രീതി.
 അവസാനക്ലാസ്.
 ക്ലാസ് ബി 1 നിർവ്വചനം a1 ൽ നിന്ന് ഇൻഹറിറ്റിംഗ്.
 പൊതുവിഭാഗം.
 രീതികൾ:m2, m1 പുനർനിർവചനം.
 അവസാനക്ലാസ്.
 ക്ലാസ് ബി 1 നടപ്പിലാക്കൽ.
 രീതി m1.
 സംഖ്യ 1 = സംഖ്യ 1 .
 എഴുതുക: 'b1:',num1.
 അവസാന രീതി.
 രീതി m2.
 എഴുതുക: 'ബി2 ക്ലാസ്സിലെ M1'.
 അവസാന രീതി.
 അവസാനക്ലാസ്.
 ആരംഭ-തിരഞ്ഞെടുപ്പ്.
 ഡാറ്റ: a1 ലേക്ക് ഒരു തരം റഫർ.
 ഡാറ്റ: b ടൈപ്പ് റഫർ ബി 1.
 *ഡാറ്റ: c ടൈപ്പ് REF TO c1.
 **************************************************** **************** ഒബ്ജക്റ്റ് സൃഷ്ടിക്കുക ബി.
 a = b.  "അപ്കാസ്‌റ്റിംഗ് കോൾ രീതി a->m1( ).
 *കോൾ രീതി a->m2( ).  "സൂപ്പർ ക്ലാസ് റെഫർ ഉപയോഗിച്ച് ഞങ്ങൾക്ക് സ്വന്തം സബ് ക്ലാസ് രീതികൾ ആക്സസ് ചെയ്യാൻ കഴിയില്ല.
 പുതിയ വര.
 ബി ?= എ.  "ഡൗൺ കാസ്റ്റിംഗ് കോൾ രീതി b->m1( ).
 പുതിയ വര.
 കോൾ രീതി b->m2( ).
 **************************************************** *************** " പിശക് null ref സൃഷ്ടിക്കുക OBJECT a.
 ബി ?= എ.  "ഡൗൺ കാസ്റ്റിംഗ് ഇപ്പോഴും അതിന്റെ നൽകുന്ന ഡംപ് കോൾ രീതി b->m1( ).
 **************************************************** *************** ഒബ്ജക്റ്റ് സൃഷ്ടിക്കുക a.
 ശ്രമിക്കുക.
 ബി ?= എ.  "നിങ്ങൾ ഒരു 'NULL' ഒബ്‌ജക്റ്റ് റഫറൻസ് ഡംപ് ഉപയോഗിക്കാൻ ശ്രമിച്ചു CATCH cx_sy_move_cast_error.
 കോൾ രീതി b->m1( ).
 ENDTRY.
 **************************************************** *************** ഒബ്ജക്റ്റ് സൃഷ്ടിക്കുക a.
 ഒബ്ജക്റ്റ് സൃഷ്ടിക്കുക ബി.
 ശ്രമിക്കുക.
 ബി ?= എ.
 cx_sy_move_cast_error പിടിക്കുക.
 കോൾ രീതി b->m1( ).
 രീതി b->m2( ) എന്ന് വിളിക്കുക.
 ENDTRY.
 CLASS lcl_shape defINITION.
 പൊതുവിഭാഗം.
 രീതികൾ വരയ്ക്കുക.
 അവസാനക്ലാസ്.
 ക്ലാസ് lcl_circle നിർവചനം lcl_shape-ൽ നിന്ന് ഇൻഹറിറ്റിംഗ്.
 പൊതുവിഭാഗം.
 രീതികൾ: പുനർനിർവചനം വരയ്ക്കുക, calc_area.
 അവസാനക്ലാസ്.
 CLASS lcl_shape IMPLEMENTATION.
 രീതി നറുക്കെടുപ്പ്.
 എഴുതുക :/ 'ഏതെങ്കിലും ആകൃതി വരയ്ക്കുന്നു'.
 അവസാന രീതി.
 അവസാനക്ലാസ്.
 CLASS lcl_circle IMPLEMENTATION.
 രീതി നറുക്കെടുപ്പ്.
 എഴുതുക :/ 'നിർദ്ദിഷ്ട ആകൃതി വരയ്ക്കുന്നു: വൃത്തം'.
 അവസാന രീതി.
 രീതി calc_area.
 എഴുതുക :/ 'Crcle ഏരിയ = 2iiR'.
 അവസാന രീതി.
 അവസാനക്ലാസ്.
 ആരംഭ-തിരഞ്ഞെടുപ്പ്.
 ഡാറ്റ: o_cir തരം REF ലേക്ക് lcl_circle.
 O_cir ഒബ്‌ജക്റ്റ് സൃഷ്‌ടിക്കുക.
 കോൾ രീതി o_cir->ഡ്രോ( ).  " കോളുകൾ സബ്ക്ലാസ് ഡ്രോ() രീതി കോൾ മെത്തഡ് o_cir->calc_area( ).
 ULINE.
 "--------- ഇടുങ്ങിയ കാസ്റ്റ് (അപ്കാസ്റ്റ്) -------------" ഡാറ്റ : o_shp തരം lcl_shape.
 o_shp = o_cir.  " ഇടുങ്ങിയ കാസ്റ്റ് (അപ്കാസ്റ്റ്) കോൾ മെത്തഡ് o_shp->ഡ്രോ( ).  " കോളുകൾ സബ് ക്ലാസ് ഡ്രോ() രീതി "വിളിക്കുക METHOD o_shp->calc_area( ) .  " സമാഹരണ പിശക് ULINE.
 "---------- വൈഡനിംഗ് കാസ്റ്റ് (ഡൗൺകാസ്റ്റ്) ----------" ഡാറ്റ : o_cir1 lcl_circle-ലേക്ക് REF എന്ന് ടൈപ്പ് ചെയ്യുക.
 " o_cir1 = o_shp.  "കോംപ്ലേഷൻ പിശക് o_cir1 ?= o_shp.  " വിശാലമാക്കൽ കാസ്റ്റ്(ഡൗൺകാസ്റ്റ്) കോൾ രീതി o_cir1->ഡ്രോ( ).  " കോളുകൾ സബ്ക്ലാസ് ഡ്രോ() രീതി കോൾ മെത്തഡ് o_cir1->calc_area( ).
 ക്ലാസ് എ 1 നിർവ്വചനം.
 പൊതുവിഭാഗം.
 ഡാറ്റ: നമ്പർ1 തരം i മൂല്യം 100.
 രീതികൾ:m1.
 അവസാനക്ലാസ്.
 ക്ലാസ് a1 നടപ്പിലാക്കൽ.
 രീതി m1.
 എഴുതുക: 'a1:',num1.
 അവസാന രീതി.
 അവസാനക്ലാസ്.
 ക്ലാസ് ബി 1 നിർവ്വചനം a1 ൽ നിന്ന് ഇൻഹറിറ്റിംഗ്.
 പൊതുവിഭാഗം.
 രീതികൾ:m2, m1 പുനർനിർവചനം.
 അവസാനക്ലാസ്.
 ക്ലാസ് ബി 1 നടപ്പിലാക്കൽ.
 രീതി m1.
 സംഖ്യ 1 = സംഖ്യ 1 .
 എഴുതുക: 'b1:',num1.
 അവസാന രീതി.
 രീതി m2.
 എഴുതുക: 'ബി2 ക്ലാസ്സിലെ M1'.
 അവസാന രീതി.
 അവസാനക്ലാസ്.
 ആരംഭ-തിരഞ്ഞെടുപ്പ്.
 ഡാറ്റ: രക്ഷിതാവ് തരം a1.
 ഡാറ്റ: ചൈൽഡ് ടൈപ്പ് ബി 1 ലേക്ക്.
 *ഡാറ്റ: c ടൈപ്പ് REF TO c1.
 **************************************************** ************** കുട്ടി ഒബ്‌ജക്റ്റ് സൃഷ്‌ടിക്കുക.
 രക്ഷിതാവ് = കുട്ടി.  "upcasting CALL METHOD parent->m1( ).
 കോൾ രീതി കുട്ടി->m1( ).
 കോൾ രീതി കുട്ടി->m2( ).
 *കോൾ രീതി a->m2( ).  "സൂപ്പർ ക്ലാസ് റെഫർ ഉപയോഗിച്ച് ഞങ്ങൾക്ക് സ്വന്തം സബ് ക്ലാസ് രീതികൾ ആക്സസ് ചെയ്യാൻ കഴിയില്ല.
 പുതിയ വര.
 കുട്ടി ?= രക്ഷിതാവ്.  "ഡൗൺ കാസ്റ്റിംഗ് കോൾ രീതി കുട്ടി->m1( ).
 പുതിയ വര.
 കോൾ രീതി കുട്ടി->m2( ).
 **************************************************** **************** *" പിശക് null ref *OBJECT സൃഷ്‌ടിക്കുക a.
 *ബി ?= എ.  "ഡൗൺ കാസ്റ്റിംഗ് ഇപ്പോഴും അതിന്റെ ഗിവിംഗ് ഡംപ് *കോൾ രീതി b->m1( ).
 **************************************************** **************** * ഒബ്ജക്റ്റ് സൃഷ്ടിക്കുക a.
 ശ്രമിക്കുക.
 ബി ?= എ.  "നിങ്ങൾ ഒരു 'NULL' ഒബ്‌ജക്റ്റ് റഫറൻസ് ഡംപ് ഉപയോഗിക്കാൻ ശ്രമിച്ചു CATCH cx_sy_move_cast_error.
 കോൾ രീതി b->m1( ).
 ENDTRY.
 **************************************************** **************** * ഒബ്ജക്റ്റ് സൃഷ്ടിക്കുക a.
 ഒബ്ജക്റ്റ് സൃഷ്ടിക്കുക ബി.
 ശ്രമിക്കുക.
 ബി ?= എ.
 cx_sy_move_cast_error പിടിക്കുക.
 കോൾ രീതി b->m1( ).
 രീതി b->m2( ) എന്ന് വിളിക്കുക.
 ENDTRY.
 ******** തനതായ മൂല്യങ്ങൾ****************** ഡാറ്റ : lv_string TYPE സ്ട്രിംഗ്, lv_string2 TYPE സ്ട്രിംഗ്, lv_string_final TYPE സ്ട്രിംഗ്.
 തരങ്ങൾ: ആരംഭം ty_data, auth TYPE c, ty_data അവസാനം.
 ഡാറ്റ: ls_user TYPE ty_data, ls_user2 TYPE ty_data, lt_user2 ടൈപ്പ് ടൈപ്പ് ടേബിൾ, lt_user TYPE TABLE OF ty_data.
 lv_string = 'a,b,c,a'.
 lv_string2 = 'd,b,c,a'.
 Lv_string AT ',' പട്ടികയിലേക്ക് lt_user വിഭജിക്കുക.
 lv_string2 AT ',' പട്ടികയിലേക്ക് lt_user2 വിഭജിക്കുക.
 lt_user2 അസൈൻ ചെയ്യുന്ന ഫീൽഡ്-ചിഹ്നത്തിൽ ലൂപ്പ് ചെയ്യുക( ).
 തിരുകുക പട്ടികയിലേക്ക് lt_user.
 ENDLOOP.
 ആധികാരികത പ്രകാരം SORT lt_user.
 ലിറ്റ്_ഉപയോക്താവിൽ നിന്ന് അടുത്തുള്ള ഡ്യൂപ്ലിക്കേറ്റുകൾ ഇല്ലാതാക്കുക.
 IF sy-subc = 0.
 എൽറ്റ്_യൂസർ അസൈൻ ചെയ്യുന്ന ഫീൽഡ്-ചിഹ്നത്തിൽ ലൂപ്പ് ചെയ്യുക( ).
 lv_string_final ആണെങ്കിൽ പ്രാഥമികം.
 lv_string_final = -auth.
 വേറെ.
 എൽവി_സ്ട്രിംഗ്_ഫൈനൽ കോൺകാറ്റനേറ്റ് ചെയ്യുക -auth INTO lv_string_final ',' കൊണ്ട് വേർതിരിച്ചിരിക്കുന്നു.
 ENDIF.
 ENDLOOP.
 ENDIF.

 

ഒരു അഭിപ്രായം ഇടൂ

സ്പാം കുറയ്ക്കുന്നതിന് ഈ സൈറ്റ് Akismet ഉപയോഗിക്കുന്നു. നിങ്ങളുടെ അഭിപ്രായ ഡാറ്റ പ്രോസസ്സുചെയ്യുന്നത് എങ്ങനെയെന്നറിയുക.