ประเภทของการสืบทอดใน Java: เดี่ยว หลายระดับ และไฮบริด
เผยแพร่แล้ว: 2021-06-30บทนำ
ภาษาการเขียนโปรแกรม “Java” ใช้กันอย่างแพร่หลายในการพัฒนาแอปพลิเคชันสำหรับมือถือ เว็บ เดสก์ท็อป ฯลฯ เป็นภาษาโปรแกรมที่มีประสิทธิภาพ ระดับสูง และเชิงวัตถุที่พัฒนาโดย Sun Microsystems ในปี 1995 แม้จะเป็นภาษาโปรแกรม , Java มี API และสภาพแวดล้อมรันไทม์ (JRE) จึงเรียกว่าเป็นแพลตฟอร์ม
มีแนวคิดหลายอย่างใน Java โดยมีสี่แนวคิดหลักในการทำความเข้าใจภาษา สิ่งที่เป็นนามธรรม การห่อหุ้ม การสืบทอด และความหลากหลาย
ในบทความนี้ เราจะเน้นที่แนวคิดของการ สืบทอดใน Java และ ประเภท ของ การสืบทอดใน java
มรดกคืออะไร?
ตามชื่อของมัน มรดกหมายถึงการสืบทอดคุณสมบัติ กลไกที่คลาสได้รับอนุญาตให้สืบทอดคุณสมบัติของคลาสอื่นเรียกว่าการสืบทอด ด้วยแนวคิดเรื่องการสืบทอด ข้อมูลในโปรแกรมสามารถจัดเป็นลำดับชั้นได้
ใน Java แนวคิดของการสืบทอดอนุญาตให้ผู้ใช้สร้างคลาสและใช้คุณสมบัติของคลาสที่มีอยู่
คำศัพท์สำคัญสองสามคำที่เกี่ยวข้องกับแนวคิดนี้คือ:

- คลาส : ถูกกำหนดให้เป็นกลุ่มของอ็อบเจ็กต์ที่แชร์คุณสมบัติทั่วไป
- คลาสย่อย : ยังเป็นที่รู้จักกันในนามคลาสที่ได้รับหรือขยาย คลาสนี้สืบทอดคุณสมบัติจากคลาสอื่น นอกเหนือจากฟิลด์และเมธอดที่สืบทอด คลาสที่สร้างจากคลาสสามารถเพิ่มฟิลด์และเมธอดของตัวเองได้
- Super Class : ซูเปอร์คลาสแสดงถึงคลาสที่มีคุณสมบัติที่สืบทอดมาจากคลาสย่อย
- การนำกลับมาใช้ใหม่ : เทคนิคการนำกลับมาใช้ใหม่ได้ทำให้ผู้ใช้สร้างคลาส (คลาสใหม่) ที่มีฟิลด์หรือเมธอดของคลาสที่มีอยู่แล้ว อนุญาตให้ใช้รหัสซ้ำ
ความสำคัญของการสืบทอด Java
การนำการ สืบทอดไปใช้ใน Java มีประโยชน์ดังต่อไปนี้:
- การสืบทอดช่วยลดความซับซ้อนของโค้ดโดยลดโค้ดที่ซ้ำกันให้น้อยที่สุด หากคลาสอื่นต้องใช้รหัสเดียวกัน ก็สามารถสืบทอดจากคลาสนั้นไปยังคลาสย่อยได้ ดังนั้นรหัสจึงถูกจัดระเบียบได้ดีขึ้น
- ประสิทธิภาพของการดำเนินการโค้ดจะเพิ่มขึ้นเมื่อมีการจัดระเบียบโค้ดในรูปแบบที่เรียบง่าย
- แนวคิดของความหลากหลายสามารถใช้ร่วมกับการสืบทอดได้
ไวยากรณ์
ไวยากรณ์พื้นฐานคือ
คลาสซูเปอร์คลาส {
-----
}
คลาสย่อยขยาย superclass
{
————–
—————–
}
คีย์เวิร์ด "extends" ใช้ในขณะที่สืบทอดคลาส กำหนดว่าฟังก์ชันของซูเปอร์คลาสกำลังขยายไปยังคลาสย่อย
คลาสใหม่ที่สร้างขึ้นเรียกว่าคลาสย่อยในขณะที่คลาสที่สืบทอดมาเรียกว่าคลาสพาเรนต์
รูปที่ 1: ตัวอย่างโค้ดที่ใช้การสืบทอดจาวาแสดงอยู่ด้านล่าง
แหล่งที่มา
การคำนวณสองคลาสและ My_Calculation ถูกสร้างขึ้นในตัวอย่างข้างต้น วิธีการ added() และการลบ () ได้รับการสืบทอดจากการคำนวณคลาสไปยัง My_Calculation มีการใช้ส่วนขยายคำหลักเพื่อสืบทอดวิธีการ
การรวบรวมและการดำเนินการของโค้ดด้านบนให้ผลลัพธ์ต่อไปนี้
รูปที่ 2: ผลลัพธ์ของรหัสในรูปที่ 1
แหล่งที่มา
การสร้างคลาส My_Calculation จะคัดลอกเนื้อหาของซูเปอร์คลาสไปไว้ในคลาสย่อย ด้วยอ็อบเจ็กต์ของคลาสย่อย ผู้ใช้สามารถเข้าถึงสมาชิกคลาสย่อย
ในบางกรณี เมื่อเราต้องแยกความแตกต่างระหว่างสมาชิกของ sub-class กับ superclass ที่มีชื่อเหมือนกัน คำหลัก "super" จะถูกนำมาใช้ หากสมมุติว่าเรามีสองคลาส Sub_class และ Super_class ที่มีเมธอดเดียวกัน เช่น display() การนำวิธีการไปใช้นั้นแตกต่างกัน แต่มีชื่อเหมือนกัน ในกรณีเช่นนี้ เพื่อแยกความแตกต่างระหว่างเมธอด superclass กับ sub-class ต้องใช้ super keyword
ประเภทของมรดก Java
การสืบทอดประเภทต่าง ๆ นั้นพบได้ใน Java:
1. มรดกระดับเดียว
ตามชื่อที่แนะนำ การสืบทอดประเภทนี้เกิดขึ้นสำหรับคลาสเดียวเท่านั้น คลาสเดียวเท่านั้นที่ได้มาจากคลาสพาเรนต์ แผนภาพการไหลของมรดกเดียวแสดงอยู่ด้านล่าง:
รูปที่ 3: ภาพประกอบกราฟิกของการสืบทอดระดับเดียว
แหล่งที่มา
คลาส A และคลาส B สองคลาสแสดงใน รูปที่ 3 โดยที่คลาส B สืบทอดคุณสมบัติของคลาส A
รูปที่ 4 : ตัวอย่างโค้ดที่ใช้การสืบทอดระดับเดียว
แหล่งที่มา
2. การสืบทอดหลายระดับ
การสืบทอดหลายระดับรวมถึงการมีส่วนร่วมของอย่างน้อยสองหรือมากกว่าสองชั้น คลาสหนึ่งสืบทอดคุณสมบัติจากคลาสพาเรนต์ และคลาสย่อยที่สร้างขึ้นใหม่จะกลายเป็นคลาสพื้นฐานสำหรับคลาสใหม่อีกคลาส
รูปที่ 5: แผนภาพการไหลของมรดกหลายระดับ
แหล่งที่มา
จากแผนภาพการไหลใน รูปที่ 5 เราสามารถสังเกตได้ว่าคลาส B เป็นคลาสที่ได้รับจากคลาส A และคลาส C นั้นมาจากคลาส B เพิ่มเติม ดังนั้นแนวคิดของคลาสปู่ย่าตายายจึงมีอยู่ในมรดกหลายระดับ อย่างไรก็ตาม สมาชิกของคลาสปู่ย่าตายายไม่สามารถเข้าถึงได้โดยตรงใน Java

ดังนั้น รูปที่ 5 แสดงว่าคลาส C กำลังสืบทอดวิธีการและคุณสมบัติของทั้งคลาส A และคลาส B
ตัวอย่างของการสืบทอดหลายระดับแสดงอยู่ด้านล่างด้วยสามคลาส X, Y และ Z คลาส Y ได้มาจากคลาส X ซึ่งสร้างคลาส Z ต่อไป
รูปที่ 6: ตัวอย่างการสืบทอดหลายระดับ
แหล่งที่มา
3. การสืบทอดตามลำดับชั้น
ประเภทของการสืบทอดที่คลาสย่อยจำนวนมากสืบทอดมาจากคลาสเดียวเรียกว่า Hierarchical Inheritance
รูปที่ 7: การแสดงกราฟิกของการสืบทอดตามลำดับชั้น
ใน รูปที่ 7 เราสามารถสังเกตได้ว่าคลาสทั้งสามคลาส B, คลาส C และ D นั้นสืบทอดมาจากคลาส A เดียว คลาสย่อยทั้งหมดมีคลาสพาเรนต์เดียวกันในการสืบทอดตามลำดับชั้น
รูปที่ 8: ตัวอย่างโค้ดที่แสดงแนวคิดของการสืบทอดตามลำดับชั้น
แหล่งที่มา
รหัสด้านบนสร้างผลลัพธ์
เหมียว…
การกิน…
นอกเหนือ จากการสืบทอดประเภทนี้ใน Java แล้ว ยัง มีประเภทอื่นๆ ที่เรียกว่าการสืบทอดหลายรายการและการสืบทอดแบบไฮบริด ทั้งสอง ประเภท ไม่ได้รับการสนับสนุนผ่านคลาสและสามารถทำได้ผ่านการใช้อินเทอร์เฟซเท่านั้น
4. มรดกหลายอย่าง
การสืบทอดหลายรายการเป็นการสืบทอดประเภทหนึ่งที่คลาสย่อยสามารถสืบทอดคุณลักษณะจากคลาสพาเรนต์มากกว่าหนึ่งคลาส
รูปที่ 9: การแสดงมรดกหลายรายการ
แหล่งที่มา
รูปที่ 4 แสดงว่าคลาส C มาจากสองคลาสคลาส A และคลาส B กล่าวอีกนัยหนึ่ง คลาสย่อย C สืบทอดคุณสมบัติจากทั้งคลาส A และ B
5. มรดกลูกผสม
การสืบทอดแบบไฮบริดเป็นการสืบทอดประเภทหนึ่งที่รวมการสืบทอดเดี่ยวและการสืบทอดหลายรายการ เนื่องจาก Java ไม่สนับสนุนการสืบทอดหลายรายการ การสืบทอดแบบไฮบริดจึงสามารถทำได้ผ่านอินเทอร์เฟซเท่านั้น

รูปที่ 10: การแสดงมรดกลูกผสม
แหล่งที่มา
ด้วยการ สืบทอดประเภทต่างๆ ใน Java เป้าหมายสูงสุดคือการสร้างคลาสย่อยที่มีคุณสมบัติที่สืบทอดมาจากซูเปอร์คลาส คลาสย่อยที่สร้างขึ้นมีคุณสมบัติต่างๆ ได้แก่:
- สามารถใช้ฟิลด์และเมธอดที่สืบทอดในคลาสย่อยได้โดยตรง
- ฟิลด์และเมธอดใหม่ยังสามารถประกาศในคลาสย่อยที่ไม่มีอยู่ในซูเปอร์คลาส
- สามารถสร้างเมธอดอินสแตนซ์ใหม่ในคลาสย่อยที่มีลายเซ็นเดียวกันกับเมธอดในซูเปอร์คลาส กระบวนการนี้เรียกว่าการแทนที่
- วิธีสแตติกใหม่สามารถสร้างได้ในคลาสย่อยที่มีลายเซ็นเดียวกันกับเมธอดในซูเปอร์คลาส กระบวนการนี้เรียกว่าการซ่อน
เรียนรู้ หลักสูตรซอฟต์แวร์ออนไลน์ จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว
บทสรุป
บทความนี้กล่าวถึงแนวคิดที่สำคัญของการสืบทอดใน Java และ ประเภท ของ การสืบทอดใน Java การสืบทอดจึงเป็นกลไกที่เราสามารถนำรหัสกลับมาใช้ใหม่ได้ เพื่อให้ได้คุณสมบัติของคลาสหนึ่งไปอีกคลาสหนึ่ง ซึ่งสามารถทำได้ผ่านรูปแบบการสืบทอดประเภทต่างๆ ดังแสดงในบทความ อย่างไรก็ตาม ยังมีแนวคิดเรื่องมรดกอีกมาก เพื่อความเป็นเลิศในด้านการพัฒนา จำเป็นต้องมีความเชี่ยวชาญในการเขียนโปรแกรม Java ที่ซับซ้อน หากคุณมีความฝันที่จะสร้างสรรค์อุปกรณ์อัจฉริยะ โปรแกรม Executive PG ในการพัฒนาซอฟต์แวร์แบบฟูลสแตกที่เสนอโดย upGrad จะเป็นตัวเลือกที่ดีที่สุด ได้รับการรับรองจาก Liverpool John Moores University หลักสูตรร่วมกับ IIIT Bangalore มีชั่วโมงการเรียนรู้มากกว่า 500 ชั่วโมงและออกแบบมาสำหรับมืออาชีพในระยะเริ่มต้น ทักษะที่เรียนรู้จากหลักสูตรของ upGrad จะช่วยเปิดโอกาสในด้านการพัฒนาซอฟต์แวร์ การพัฒนาเว็บ นักพัฒนาจาวาสคริปต์ ฯลฯ เปิดรับทุกเพศภายในกลุ่มอายุ 21-45 ปี โปรแกรมแบบโต้ตอบอาจเป็นทางเลือกที่ดีที่สุดสำหรับ ตัวเข้ารหัสทั้งหมด
มรดกคืออะไร?
การสืบทอดเป็นกระบวนการที่วัตถุใหม่ได้มาซึ่งคุณสมบัติของวัตถุก่อนหน้า ตัวอย่างเช่น คุณสามารถพิจารณาคลาส 'มนุษย์' อาจมีคุณสมบัติหลายอย่างของมนุษย์ที่คุณต้องการรวมไว้ในชั้นเรียนของคุณ เช่น ส่วนสูง น้ำหนัก ฯลฯ วิธีหนึ่งที่จะทำคือกำหนดคุณสมบัติเหล่านั้นทั้งหมดอีกครั้งในชั้นเรียนของคุณ อาจเป็นวิธีที่ดีในการเรียนรู้การเขียนโปรแกรมเชิงวัตถุ แต่ไม่ใช่แนวปฏิบัติที่ดี วิธีที่ดีที่สุดที่จะทำคือการสืบทอดคุณสมบัติเหล่านั้นทั้งหมดจากคลาสเฉพาะ คลาส 'child' สามารถสืบทอดคุณสมบัติทั้งหมดของคลาส 'human' (หรือ 'parent') สิ่งนี้เรียกว่าการสืบทอดในการเขียนโปรแกรมเชิงวัตถุ