คำนำ
Java เป็นภาษาที่มุ่งเน้นวัตถุ ทุกคนที่เรียนรู้ Java รู้ว่าการห่อหุ้มมรดกและความหลากหลายเป็นลักษณะสามประการของวัตถุที่มุ่งเน้น เมื่อทุกคนเพิ่งเรียนรู้มรดกพวกเขาจะมีความประทับใจมากขึ้นหรือน้อยลงว่ามรดกสามารถช่วยให้ฉันตระหนักถึงการใช้ซ้ำในชั้นเรียน ดังนั้นนักพัฒนาหลายคนจะใช้มรดกในชั้นเรียนตามธรรมชาติเมื่อพวกเขาต้องการนำรหัสกลับมาใช้ใหม่เพราะนี่คือสิ่งที่หนังสือเขียน (นี่คือสิ่งที่ครูสอน) อย่างไรก็ตามมันผิดจริง ๆ ที่จะทำเช่นนี้ การใช้มรดกขนาดใหญ่ในระยะยาวจะนำค่าใช้จ่ายในการบำรุงรักษาสูงมาสู่รหัส
ที่จริงแล้วเมื่อฉันเรียนรู้ Java ครั้งแรกฉันไม่เคยได้ยินคำศัพท์มาก่อนและครูไม่เคยอธิบาย ฉันมักจะคิดว่าฉันสูญเสียคะแนนความรู้ไปบ้าง แต่มันก็ไม่ใช่ คำว่าการรวมกันควรถูกกำหนดให้เป็นสิ่งที่คิดในขณะนี้ ฉันเชื่อว่าผู้อ่านได้ติดต่อกับมัน แต่ฉันไม่รู้ว่ามันมีชื่อนี้
ในความเป็นจริงการรวมกันที่เรียกว่าคือการสร้างคลาสใหม่เพื่อเรียกคลาสที่ถูกสร้างและดีบักดังนั้นคลาสใหม่นี้สามารถเรียกได้ว่าเป็นการรวมกัน
ตัวอย่างเช่นฉันสร้างคน
คนชั้นเรียนสาธารณะ {ชื่อสตริงส่วนตัว; อายุ int ส่วนตัว; โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } สตริงสาธารณะ getName () {return this.name; } public int getage () {return this.age; } การตั้งค่าโมฆะสาธารณะ (อายุ int) {this.age = อายุ; - จากนั้นฉันต้องการใช้คลาสนี้ตอนนี้ ฉันสามารถเพิ่มคุณสมบัติใหม่ในคลาสนี้ ในเวลานี้เราสามารถสร้างคลาสใหม่แล้วสร้างวัตถุของผู้คนในชั้นเรียนนี้
ตัวอย่างเช่นตอนนี้ฉันกำลังสร้างชั้นเรียนที่เรียกว่านักเรียน
นักเรียนชั้นเรียน {คนคน = คนใหม่ ();} จากนั้นคุณสามารถเพิ่มคุณลักษณะบางอย่างให้กับชั้นเรียนนี้เช่นการกำหนดตัวตนเป็นนักเรียนซึ่งฉันจะไม่พูดคุยที่นี่
ถัดไปมาดูมรดก ในความเป็นจริงการสืบทอดและการรวมกันมีความคล้ายคลึงกัน ก่อนอื่นมาดูกันว่ามันถูกสืบทอดมาก่อน
มีคำหลักที่เรียกว่าขยายใน Java ซึ่งสามารถช่วยเราสืบทอดได้ เราเรียกคลาสพาเรนต์คลาสที่สืบทอดมา, คลาสฐาน, คลาสซุปเปอร์คลาสและผู้สืบทอดล้วนตกลงกันและเราเรียกคลาสย่อยที่สืบทอดหรือคลาสที่ได้รับ ฯลฯ
ที่นี่เรากำหนดชั้นเรียน
นักเรียนชั้นเรียนสาธารณะขยายคน {// dosomething} ด้วยวิธีนี้คลาสจะสืบทอดวิธีการสมาชิกทั้งหมดและตัวแปรสมาชิกของคลาสแม่ แต่โปรดทราบว่าฟิลด์หรือวิธีการที่ประกาศว่าเป็นการอนุญาตส่วนตัวจะไม่ได้รับการสืบทอด
เพื่อพิสูจน์สิ่งนี้เราเขียนวิธีการในชั้นเรียนนักเรียน
สตริงสาธารณะ re () {return this.name;}ที่นี่คอมไพเลอร์จะรายงานข้อผิดพลาด "people.name ไม่สามารถมองเห็นได้" จากที่นี่เราจะเห็นได้ว่าฟิลด์หรือวิธีการที่ประกาศว่าเป็นส่วนตัวไม่สามารถสืบทอดได้ หากคุณต้องการรับมรดกคุณสามารถเปลี่ยนส่วนตัวเป็นการป้องกัน ด้วยวิธีนี้เราสามารถสืบทอดฟิลด์ชื่อได้อย่างราบรื่น
ด้วยวิธีนี้เราเริ่มต้นฟิลด์ทั้งหมดในคนเพียงเพิ่มบล็อกรหัสนี้ลงในรหัส
{this.age = 10; this.name = "Zhangsan";}ถัดไปประกาศนักเรียนคนนี้ในหน้าที่หลัก
นักเรียนนักเรียน = นักเรียนใหม่ (); System.out.println (student.getage ());
ตอนนี้เรารู้สึกประหลาดใจที่พบว่าวิธีการเขียนนี้เป็นไปได้ แม้ว่าเราจะไม่ได้ประกาศฟิลด์และวิธีการใด ๆ ในคลาสย่อย แต่เรายังสามารถเรียก getage (); และเราสามารถพิมพ์ได้ 10 อย่างราบรื่น
นี่เป็นเพราะเราไม่โอเวอร์โหลดวิธีใด ๆ ในคลาสย่อยดังนั้นเราจึงเรียกคลาสพาเรนต์ getage ดังนั้นเราจึงสามารถเข้าถึงฟิลด์ที่ประกาศโดยคลาสแม่ส่วนตัวได้อย่างง่ายดาย
หลังจากอ่านสิ่งเหล่านี้ฉันเชื่อว่าทุกคนมีความเข้าใจเบื้องต้นเกี่ยวกับมรดก ดังนั้นในกลไกการสืบทอดวิธีการก่อสร้างของแต่ละชั้นเรียนเรียกว่าอย่างไร? คำตอบคือโทรหาพวกเขาตามลำดับจากคลาสหลักไปยังชั้นเรียนเด็ก
ในขณะที่แสดงให้เห็นว่าฉันประกาศสามชั้นเรียน temp1, temp2 และ temp3 ในเวลาเดียวกัน TEMP3 สืบทอดมาจาก Temp2 และ Temp2 สืบทอดมาจาก Temp1 ด้วยวิธีนี้เราใส่คำสั่งที่พิมพ์ลงในวิธีการก่อสร้างของแต่ละชั้นเรียน
//temp1system.out.println("i'm temp1 "); // temp2system.out.println (" ฉัน temp2 "); // temp3system.out.println (" ฉัน temp3 "); เพื่อความสะดวกฉันเขียนที่นี่ แต่ทุกคนต้องใส่ใจกับความจริงที่ว่าสิ่งเหล่านี้ถูกวางไว้ในวิธีการก่อสร้างของแต่ละหมวดหมู่
เราสร้างวัตถุ temp3 ในฟังก์ชั่นหลัก
ชั้นเรียนสาธารณะ Mian {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {temp3 temp3 = ใหม่ temp3 (); -เราดูที่คอนโซลและพิมพ์มัน
I'm temp1i'm temp2i'm temp3
จากนี้เราจะเห็นได้ว่าเราจำเป็นต้องสร้างวัตถุของ TEMP3 ก่อนค้นหาคำหลักขยายจากนั้นทำตามห่วงโซ่การสืบทอดค้นหา Temp2 และค้นหาคำหลักขยายจากนั้นค้นหา Temp1 จากนั้นเรียกคอนสตรัคเตอร์ของ Temp1 แล้วโทรทีละหนึ่ง
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะช่วยในการศึกษาหรือทำงานของคุณ หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร