บทความนี้อธิบายการกำหนดตารางเวลาแบบไดนามิกของ Java แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
การกำหนดเวลาวิธีการแบบไดนามิก:
1. เข้าถึงวิธีที่ไม่คงที่ของตัวแปรอ้างอิงและผูกวิธีการของวัตถุอ้างอิงจริงที่รันไทม์
2. เข้าถึงวิธีการคงที่ของตัวแปรอ้างอิงซึ่งถูกผูกไว้กับวิธีการเรียนที่ประกาศไว้ที่รันไทม์
3. เข้าถึงตัวแปรสมาชิกของตัวแปรอ้างอิง (รวมถึงตัวแปรคงที่และตัวแปรอินสแตนซ์) และผูกตัวแปรสมาชิกของคลาสที่ประกาศไว้ที่รันไทม์
จุดที่ 3: ให้ความสนใจเป็นพิเศษฉันไม่เคยสังเกตมาก่อน
1. วิธีที่ไม่คงที่:
บุคคลชั้นเรียนสาธารณะ {ชื่อสตริงสาธารณะ; โมฆะสาธารณะ getInfo () {system.out.println ("คลาสแม่"); }} นักเรียนชั้นเรียนสาธารณะขยายบุคคล {โมฆะสาธารณะ getInfo () {// วิธีแทนที่ super.getInfo (); // โทรหาวิธีการคลาสแม่ระบบ System.out.println ("subclass");} โมฆะคงที่สาธารณะหลัก (สตริง [] args) {person s = นักเรียนใหม่ (); บุคคล t = คนใหม่ (); s = t; // ประเภทวัตถุของ s คือคลาสแม่นั่นคือคลาสบุคคล s.getinfo ();}}ผลลัพธ์ของการรันคือ: คลาสแม่
2. วิธีการคงที่:
บุคคลชั้นเรียนสาธารณะ {ชื่อสตริงสาธารณะ; โมฆะคงที่สาธารณะ getInfo () {system.out.println ("คลาสแม่"); }} นักเรียนชั้นเรียนสาธารณะขยายบุคคล {Publics คงที่เป็นโมฆะ getInfo () {// วิธีการแทนที่ System.out.println ("subclass");} โมฆะสาธารณะคงที่ (สตริง [] args) {person s = ใหม่นักเรียน (); s.getInfo (); // เทียบเท่ากับ person.getInfo ();}}ผลลัพธ์ของการรันคือ: คลาสแม่
3. ตัวแปรสมาชิก
ชั้นเรียนสาธารณะ {ชื่อสตริงสาธารณะ = "พ่อ"; โมฆะสาธารณะ getInfo () {system.out.println ("คลาสแม่"); }} นักเรียนชั้นเรียนสาธารณะขยายบุคคล {ชื่อสตริงสาธารณะ = "ลูกชาย"; โมฆะสาธารณะ getInfo () {// วิธีแทนที่ super.getInfo (); // โทรหาวิธีการคลาสแม่ระบบ System.out.println ("subclass");} โมฆะคงที่สาธารณะหลัก (สตริง [] args) {person s = นักเรียนใหม่ (); บุคคล t = บุคคลใหม่ (); s = t; system.out.println (s.name);}}}}ผลการทำงาน: fanther
เช่นเดียวกับการเปลี่ยนตัวแปรสมาชิกเป็นประเภทคงที่
นอกจากนี้สำหรับตัวแปรสองตัวต่อไปนี้
นักเรียน = นักเรียนใหม่ (); บุคคล t = นักเรียนใหม่ ();
อย่างไรก็ตามมีความแตกต่างระหว่างทั้งสอง เมื่อนักเรียน subclass มีวิธีการส่วนตัวของตัวเอง (ไม่ใช่ในชั้นเรียนหลัก) ตัวอย่างเช่นมีวิธีการ
Public Goschool () {}จากนั้นเพียง S เท่านั้นที่สามารถเรียกวิธีการนี้ Goschool ได้
ไม่สามารถเรียกได้
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน