แคสติ้งโปรแกรม ABAP

คำจำกัดความของคลาส a1
 ส่วนสาธารณะ.
 DATA: num1 ประเภท i มูลค่า 100
 วิธีการ:ม.1.
 ENDCLASS
 การดำเนินการระดับ a1
 วิธีการ ม.1
 เขียน: 'a1:', num1
 ปลายทาง
 ENDCLASS
 คำจำกัดความของคลาส b1 สืบทอดมาจาก a1
 ส่วนสาธารณะ.
 วิธีการ:m2, m1 นิยามใหม่
 ENDCLASS
 การดำเนินการคลาส b1
 วิธีการ ม.1
 นัม1 = นัม1
 เขียน: 'b1:', num1
 ปลายทาง
 วิธีการ ม.2
 เขียน: 'M2 ในคลาส b1'
 ปลายทาง
 ENDCLASS
 เริ่มต้นของการเลือก
 ข้อมูล: ประเภท REF ถึง a1
 ข้อมูล: b ประเภท REF ถึง b1
 *ข้อมูล: ประเภท c REF ถึง c1
 ************************************************** ************** สร้างวัตถุ b.
 ก = ข  "กำลังดำเนินการ CALL METHOD a->m1( )
 *เรียก METHOD a->m2( )  " เราไม่สามารถเข้าถึงวิธีการของคลาสย่อยของตัวเองโดยใช้ super class ref.
 NEW-LINE.
 ข ?= ก.  " ลง CALL METHOD b->m1( )
 NEW-LINE.
 วิธีการโทร b->m2( )
 ************************************************** *************** " ข้อผิดพลาด null ref สร้าง OBJECT
 ข ?= ก.  "การแคสต์ยังคงเป็นการเรียกการถ่ายโอนข้อมูล METHOD b->m1( )
 ************************************************** *************** สร้างวัตถุ
 ลอง.
 ข ?= ก.  "คุณพยายามใช้การถ่ายโอนข้อมูลอ้างอิงวัตถุ 'NULL' CATCH cx_sy_move_cast_error
 วิธีการโทร b->m1( )
 ENDTRY
 ************************************************** *************** สร้างวัตถุ
 สร้างวัตถุ ข.
 ลอง.
 ข ?= ก.
 จับ cx_sy_move_cast_error.
 วิธีการโทร b->m1( )
 เรียก METHOD b->m2( )
 ENDTRY
 คลาส lcl_shape DEFINITION
 ส่วนสาธารณะ.
 วิธีการวาด
 ENDCLASS
 คลาส lcl_circle คำจำกัดความที่สืบทอดมาจาก lcl_shape
 ส่วนสาธารณะ.
 วิธี: วาด REDEFINITION, calc_area
 ENDCLASS
 คลาส lcl_shape นำไปใช้
 วิธีการวาด
 WRITE :/ 'วาดรูปอะไรก็ได้'
 ปลายทาง
 ENDCLASS
 คลาส lcl_circle นำไปใช้
 วิธีการวาด
 WRITE :/ 'การวาดรูปร่างเฉพาะ: วงกลม'
 ปลายทาง
 วิธี calc_area.
 เขียน:/ 'พื้นที่ของ Crcle = 2iiR'
 ปลายทาง
 ENDCLASS
 เริ่มต้นของการเลือก
 DATA : o_cir TYPE REF ถึง lcl_circle
 สร้างวัตถุ o_cir
 วิธีการโทร o_cir->draw( )  " เรียกคลาสย่อย Draw() เมธอด CALL METHOD o_cir->calc_area( )
 ยูไลน์
 "--------- แคสต์แคบ (Upcast) ---------------" DATA: o_shp TYPE REF TO lcl_shape
 o_shp = o_cir  " แคสต์แคบ (Upcast) วิธีโทร o_shp->draw( )  " เรียกเมธอด Draw() คลาสย่อย "เรียก METHOD o_shp->calc_area( )  " ข้อผิดพลาดในการรวบรวม ULINE
 "---------- Widening Cast(Downcast) ------------" DATA : o_cir1 TYPE REF TO lcl_circle.
 " o_cir1 = o_shp.  " ข้อผิดพลาดในการรวบรวม o_cir1 ?= o_shp.  " Widening Cast(Downcast) วิธีการโทร o_cir1->draw( )  " เรียกคลาสย่อย Draw() เมธอด CALL METHOD o_cir1->calc_area( )
 คำจำกัดความของคลาส a1
 ส่วนสาธารณะ.
 DATA: num1 ประเภท i มูลค่า 100
 วิธีการ:ม.1.
 ENDCLASS
 การดำเนินการระดับ a1
 วิธีการ ม.1
 เขียน: 'a1:', num1
 ปลายทาง
 ENDCLASS
 คำจำกัดความของคลาส b1 สืบทอดมาจาก a1
 ส่วนสาธารณะ.
 วิธีการ:m2, m1 นิยามใหม่
 ENDCLASS
 การดำเนินการคลาส b1
 วิธีการ ม.1
 นัม1 = นัม1
 เขียน: 'b1:', num1
 ปลายทาง
 วิธีการ ม.2
 เขียน: 'M2 ในคลาส b1'
 ปลายทาง
 ENDCLASS
 เริ่มต้นของการเลือก
 ข้อมูล: parent TYPE REF ถึง a1
 ข้อมูล: ลูก ประเภท REF ถึง b1
 *ข้อมูล: ประเภท c REF ถึง c1
 ************************************************** ************** สร้างวัตถุลูก
 พ่อ แม่ = ลูก.  "กำลังอัป CALL METHOD parent->m1( )
 วิธีเรียก child->m1( ).
 วิธีเรียก child->m2( ).
 *เรียก METHOD a->m2( )  " เราไม่สามารถเข้าถึงวิธีการของคลาสย่อยของตัวเองโดยใช้ super class ref.
 NEW-LINE.
 ลูก ?= ผู้ปกครอง  " แคสต์ CALL METHOD child->m1( )
 NEW-LINE.
 วิธีเรียก child->m2( ).
 ************************************************** **************** *" error null ref * create OBJECT a.
 *b ?= ก.  "การหล่อลงยังคงเป็นการถ่ายโอนข้อมูล *call METHOD b->m1( )
 ************************************************** **************** * สร้างวัตถุ
 ลอง.
 ข ?= ก.  "คุณพยายามใช้การถ่ายโอนข้อมูลอ้างอิงวัตถุ 'NULL' CATCH cx_sy_move_cast_error
 วิธีการโทร b->m1( )
 ENDTRY
 ************************************************** **************** * สร้างวัตถุ
 สร้างวัตถุ ข.
 ลอง.
 ข ?= ก.
 จับ cx_sy_move_cast_error.
 วิธีการโทร b->m1( )
 เรียก METHOD b->m2( )
 ENDTRY
 ******** ค่าที่ไม่ซ้ำกัน****************** DATA : lv_string TYPE string, lv_string2 TYPE string, lv_string_final TYPE string
 ประเภท: BEGIN ของ ty_data, รับรองความถูกต้อง TYPE c, สิ้นสุด ty_data
 ข้อมูล: ls_user TYPE ty_data, ls_user2 TYPE ty_data, lt_user2 TYPE TABLE ของ ty_data, lt_user TYPE TABLE ของ 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.
 เอ็นด์ลูป
 เรียงลำดับ lt_user โดยตรวจสอบสิทธิ์
 ลบ ADJACENT ที่ซ้ำกันจาก lt_user การเปรียบเทียบการตรวจสอบสิทธิ์
 ถ้า sy-subrc = 0
 วนซ้ำที่ lt_user กำหนด FIELD-SYMBOL ( ).
 ถ้า lv_string_final เป็นค่าเริ่มต้น
 lv_string_final = -รับรองความถูกต้อง
 อื่น.
 เชื่อมต่อ lv_string_final -auth INTO lv_string_final แยกตาม ','
 ENDIF
 เอ็นด์ลูป
 ENDIF

 

ทิ้งข้อความไว้

ไซต์นี้ใช้ Akismet เพื่อลดสแปม เรียนรู้วิธีการประมวลผลข้อมูลความคิดเห็นของคุณ.