ประเภทของมรดกใน Java พร้อมตัวอย่าง

เผยแพร่แล้ว: 2022-06-26

การสืบทอดใน Java ช่วยให้นักพัฒนาสามารถสร้างคลาสใหม่ด้วยคลาสที่มีอยู่ ช่วยให้สามารถนำรหัสกลับมาใช้ใหม่ได้ การสืบทอดสามารถเป็นได้ทั้งการสืบทอดเดี่ยวและการสืบทอดหลายระดับ การสืบทอดช่วยลดความซ้ำซ้อนของโค้ด ทำให้อ่านและบำรุงรักษาได้ง่ายขึ้น และทำหน้าที่เป็นเครื่องมือในการเพิ่มคุณภาพซอฟต์แวร์

สารบัญ

ความสำคัญของมรดก

ใน Java การสืบทอดเป็นวิธีการที่คลาสหนึ่งได้รับคุณสมบัติและฟังก์ชันการทำงานของคลาสอื่น การสืบทอดช่วยประหยัดเวลา ลดความซ้ำซ้อน ทำให้โค้ดอ่านง่ายขึ้น เข้าใจได้ และบำรุงรักษาได้ และทำหน้าที่เป็นเครื่องมือในการเพิ่มคุณภาพซอฟต์แวร์ การสืบทอดมีแอปพลิเคชั่นที่สำคัญมากมายในภาษาการเขียนโปรแกรม Java การสืบทอดช่วยให้นักพัฒนาสามารถสร้างคลาสใหม่โดยใช้คลาสที่มีอยู่ คลาสที่สืบทอดทำหน้าที่เป็นเทมเพลตหรือพิมพ์เขียว การสืบทอดให้ซอฟต์แวร์นำมาใช้ใหม่ คลาสที่สืบทอดทำหน้าที่เป็นความสัมพันธ์หลักและรอง เป็นอิสระ.

ลำดับชั้นการสืบทอดแสดงถึงความสัมพันธ์ระหว่างพ่อแม่และลูกระหว่างระดับการสืบทอดที่แตกต่างกัน ระดับสูงสุดของการสืบทอดเรียกว่า “Super Class” หรือ “Parent Class”

เรียนรู้หลักสูตรการพัฒนาซอฟต์แวร์ออนไลน์จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม Executive PG โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว

ไวยากรณ์ของ Java Inheritance

คลาส Subclass-name ขยาย Superclass-name

{

//เมธอดและฟิลด์

}

คีย์เวิร์ดขยายแสดงว่าคุณกำลังสร้างคลาสใหม่ที่สืบทอดฟังก์ชันการทำงานทั้งหมดจากพาเรนต์ มีความหมายว่า “เพิ่ม” หรือปรับปรุงสิ่งที่มีอยู่แล้ว

ตัวอย่าง: ในตัวอย่างด้านล่างของการสืบทอด คลาส Bicycle เป็นคลาสพื้นฐาน คลาส MountainBike เป็นคลาสที่ได้รับซึ่งขยายคลาส Bicycle และคลาส Test เป็นคลาสไดรเวอร์เพื่อเรียกใช้โปรแกรม

ป้อนข้อมูล:

// โปรแกรม Java เพื่อแสดง

// แนวคิดเรื่องมรดก

// คลาสพื้นฐาน

คลาสจักรยาน {

// คลาสจักรยานมีสองสนาม

เกียร์สาธารณะ

ความเร็ว int สาธารณะ;

// คลาสจักรยานมีคอนสตรัคเตอร์หนึ่งตัว

รถจักรยานสาธารณะ (int gear, int speed)

{

this.gear = เกียร์;

this.speed = ความเร็ว;

}

// คลาสจักรยานมีสามวิธี

โมฆะสาธารณะ applyBrake (ลดลง int)

{

ความเร็ว -= ลดลง;

}

โมฆะสาธารณะ speedUp (เพิ่มขึ้น int)

{

ความเร็ว += เพิ่มขึ้น;

}

// toString() วิธีการพิมพ์ข้อมูลของ Bicycle

สตริงสาธารณะ toString()

{

กลับ (“ไม่มีเกียร์ ” + เกียร์ + “\n”

+ “ความเร็วของจักรยานคือ ” + ความเร็ว);

}

}

// คลาสที่ได้รับ

คลาส MountainBike ขยายจักรยาน {

// คลาสย่อย MountainBike เพิ่มอีกหนึ่งฟิลด์

ที่นั่ง int สาธารณะความสูง;

// คลาสย่อย MountainBike มีตัวสร้างหนึ่งตัว

MountainBike สาธารณะ (เกียร์ int, ความเร็ว int,

int startHeight)

{

// เรียกใช้ตัวสร้างคลาสฐาน (จักรยาน)

ซุปเปอร์(เกียร์, ความเร็ว);

seatHeight = startHeight;

}

// คลาสย่อย MountainBike เพิ่มเมธอดอีกวิธีหนึ่ง

โมฆะสาธารณะ setHeight (int newValue)

{

seatHeight = ใหม่ค่า;

}

// แทนที่ toString() method

// ของจักรยานเพื่อพิมพ์ข้อมูลเพิ่มเติม

@Override สตริงสาธารณะ toString()

{

return (super.toString() + “\nความสูงของที่นั่งคือ “

+ ความสูงที่นั่ง);

}

}

//ชั้นคนขับ

การทดสอบระดับสาธารณะ {

โมฆะคงที่สาธารณะหลัก (สตริง args[])

{

MountainBike mb = MountainBike ใหม่ (3, 100, 25);

System.out.println(mb.toString());

}

}

เอาท์พุต :

จำนวนเกียร์ 3

ความเร็วของจักรยานคือ 100

ความสูงที่นั่ง 25

ข้อกำหนดที่ใช้ในมรดก

  • คลาส : คลาสคือกลุ่มของอ็อบเจ็กต์ที่มีคุณสมบัติร่วมกัน มันเหมือนกับคู่มือการใช้งานหรือพิมพ์เขียวที่สร้างหน่วยอื่นๆ
  • คลาสย่อย/คลาสย่อย : คลาสย่อยคือคลาสที่สืบทอดคลาสอื่น เรียกอีกอย่างว่าคลาสที่ได้รับ คลาสเสริม หรือคลาสย่อย
  • Super Class/Parent Class : Superclass เป็นคลาสที่ subclass สืบทอดคุณสมบัติ เรียกอีกอย่างว่าคลาสฐานหรือคลาสพาเรนต์
  • ความสามารถใน การนำกลับมาใช้ใหม่ ได้ : ความสามารถในการนำกลับมาใช้ใหม่ได้คือหลักการออกแบบที่สำคัญในการเขียนโปรแกรมเชิงวัตถุ หมายความว่าคุณสามารถใช้ฟิลด์และเมธอดจากคลาสที่มีอยู่ซ้ำเมื่อสร้างคลาสใหม่แทนที่จะทำซ้ำตัวเองด้วยการเข้ารหัสแต่ละรายการทุกครั้ง

หลักสูตรและบทความยอดนิยมเกี่ยวกับวิศวกรรมซอฟต์แวร์

โปรแกรมยอดนิยม
หลักสูตร Executive PG ในการพัฒนาซอฟต์แวร์ - IIIT B โปรแกรมใบรับรองบล็อคเชน - PURDUE โปรแกรมใบรับรองความปลอดภัยทางไซเบอร์ - PURDUE MSC ในวิทยาการคอมพิวเตอร์ - IIIT B
บทความยอดนิยมอื่น ๆ
Cloud Engineer เงินเดือนในสหรัฐอเมริกา 2021-22 เงินเดือนสถาปนิกโซลูชัน AWS ในสหรัฐอเมริกา เงินเดือนนักพัฒนาแบ็กเอนด์ในสหรัฐอเมริกา Front End Developer เงินเดือนในสหรัฐอเมริกา
นักพัฒนาเว็บ เงินเดือนในสหรัฐอเมริกา คำถามสัมภาษณ์ Scrum Master ในปี 2022 จะเริ่มอาชีพใน Cyber ​​​​Security ในปี 2022 ได้อย่างไร? ตัวเลือกอาชีพในสหรัฐอเมริกาสำหรับนักศึกษาวิศวกรรม

ประเภทของมรดก Java

1. มรดกเดี่ยว

การสืบทอดเดี่ยวหมายความว่าคลาสหนึ่งขยายอีกคลาสหนึ่งหรือใช้อินเทอร์เฟซหลายตัวพร้อมกันด้วยตัวแก้ไขการเข้าถึงเดียวกันหรือไม่เข้าถึงตัวแก้ไขเช่นสาธารณะหรือส่วนตัว คลาสย่อยที่สร้างขึ้นจะสืบทอดฟังก์ชันของสมาชิกและสมาชิกข้อมูลทั้งหมดจากเบส/ซูเปอร์คลาส ยกเว้นที่ประกาศเป็นไพรเวต และสมาชิกเหล่านี้อาจเข้าถึงได้โดยสมาชิกและเพื่อนๆ ของคลาสย่อย

อ้างถึงตัวอย่างด้านล่าง:

ป้อนข้อมูล:

// โปรแกรม Java เพื่อแสดง

// แนวคิดของการสืบทอดเดี่ยว

นำเข้า java.io.*;

นำเข้า java.lang.*;

นำเข้า java.util.*;

ชั้นหนึ่ง {

โมฆะสาธารณะ print_A()

{

System.out.println("A");

}

}

คลาสที่สองขยายหนึ่ง {

โมฆะสาธารณะ print_for() { System.out.println("for"); }

}

//ชั้นคนขับ

คลาสสาธารณะหลัก {

โมฆะคงที่สาธารณะ main(String[] args)

{

สอง g = ใหม่ สอง ();

g.print_A();

g.print_for();

g.print_Apple();

}

}

เอาท์พุต :

อา

สำหรับ

แอปเปิล

2. มรดกหลายระดับ

มรดกหลายระดับคือมรดกที่มีลูกโซ่ n ใน Java คลาสที่ได้รับไม่สามารถเข้าถึงสมาชิกของปู่ย่าตายายได้โดยตรง เมื่อคุณมีลำดับชั้นการสืบทอดเช่นนี้ ซึ่งแต่ละระดับใหม่จะสืบทอดจากบุคคลหรือสิ่งของอื่นก่อนหน้านั้น (หรือในทางกลับกัน) วัตถุใดก็ตามในกลุ่มใดกลุ่มหนึ่งจะกลายเป็นเรื่องยาก เนื่องจากพวกเขาสามารถใช้สิ่งที่มีได้เฉพาะของตนเองเท่านั้น ระดับ; จึงทำให้การดีบักน่าเบื่อเกินความจำเป็น!

ป้อนข้อมูล:

// โปรแกรม Java เพื่อแสดง

// แนวคิดของการสืบทอดหลายระดับ

นำเข้า java.io.*;

นำเข้า java.lang.*;

นำเข้า java.util.*;

ชั้นหนึ่ง {

โมฆะสาธารณะ print_Inheritance()

{

System.out.println("มรดก");

}

}

คลาสที่สองขยายหนึ่ง {

โมฆะสาธารณะ print_in () { System.out.println ("ใน"); }

}

ชั้นสามขยายสอง {

โมฆะสาธารณะ print_Inheritance()

{

System.out.println("จาวา");

}

}

// คลาสที่ได้รับ

คลาสสาธารณะหลัก {

โมฆะคงที่สาธารณะ main(String[] args)

{

สาม g = ใหม่ สาม ();

g.print_Inheritance();

g.print_in();

g.print_Java();

}

}

เอาท์พุต :

มรดก

ใน

Java

3. การสืบทอดตามลำดับชั้น

สองคลาสในลำดับชั้นสามารถสืบทอดจากกัน ตัวอย่างเช่น ถ้าทั้งสุนัขและแมวตกอยู่ภายใต้ Animal ก็จะมีการสืบทอดตามลำดับชั้นโดยที่พวกมันเป็นทายาทของคลาสนั้น

ป้อนข้อมูล:

สัตว์ประจำชั้น{

ถือเป็นโมฆะกิน(){System.out.println("กิน...");}

}

คลาส สุนัข ขยาย สัตว์{

เปลือกเป็นโมฆะ(){System.out.println("เห่า…”);}

}

คลาส Cat ขยายสัตว์{

โมฆะ meow(){System.out.println("meowing...");}

}

คลาส TestInheritance3{

โมฆะคงที่สาธารณะหลัก (สตริง args[]){

แมว c = แมวใหม่ ();

c.meow();

ค.กิน();

//c.bark();//CTError

}}

เอาท์พุต :

เหมียว…

การกิน…

4. การสืบทอดหลายรายการ (ผ่านอินเทอร์เฟซ)

Java ไม่สนับสนุนการสืบทอดหลายรายการกับคลาส แต่สามารถบรรลุได้ผ่านอินเทอร์เฟซ ในภาพด้านล่างคลาส C มาจากทั้ง A และ B ซึ่งหมายความว่าพวกเขาแบ่งปันคุณสมบัติบางอย่างในขณะที่มีการใช้งานที่แตกต่างกันสำหรับผู้อื่นขึ้นอยู่กับความต้องการเฉพาะของพวกเขาในการเรียกใช้โค้ดหรือการปฏิบัติตามวิธีการที่ผู้ใช้ต้องการ (i)

ป้อนข้อมูล:

// โปรแกรม Java เพื่อแสดง

// แนวคิดของการสืบทอดหลายรายการ

นำเข้า java.io.*;

นำเข้า java.lang.*;

นำเข้า java.util.*;

อินเทอร์เฟซหนึ่ง {

โมฆะสาธารณะ print_eye();

}

อินเทอร์เฟซที่สอง {

โมฆะสาธารณะ print_for();

}

อินเทอร์เฟซสามขยายหนึ่งสอง {

โมฆะสาธารณะ print_eye();

}

เด็กคลาสดำเนินการสาม {

@แทนที่โมฆะสาธารณะ print_eye()

{

System.out.println("ตา");

}

โมฆะสาธารณะ print_for() { System.out.println("for"); }

}

// คลาสที่ได้รับ

คลาสสาธารณะหลัก {

โมฆะคงที่สาธารณะ main(String[] args)

{

ลูก c = ลูกใหม่ ();

c.print_eye();

c.print_for();

c.print_eye();

}

}

เอาท์พุต :

ดวงตา

สำหรับ

ดวงตา

5. มรดกไฮบริด (ผ่านอินเทอร์เฟซ)

Hybrid inheritance เป็นโปรแกรมประเภทหนึ่งที่ช่วยให้เราสามารถผสมสองประเภทขึ้นไปได้ คลาสไม่สามารถทำสิ่งนี้เพียงลำพังได้ เพราะมีเมธอดเพียงชุดเดียว ซึ่งหมายความว่าเราต้องการอ็อบเจ็กต์อื่นเพื่อให้ทุกอย่างทำงานได้อย่างถูกต้อง แต่อินเทอร์เฟซให้ความอุ่นใจโดยช่วยให้คุณรู้ว่าโปรแกรมของคุณจะหน้าตาเป็นอย่างไรก่อนที่จะเขียนโค้ดใดๆ !

ป้อนข้อมูล

(อ้างอิง)

คลาส A และ B ขยายคลาส C → การสืบทอดตามลำดับชั้น

คลาส D ขยายคลาส A → การสืบทอดเดี่ยว

คลาส C

{

โมฆะสาธารณะ disp()

{

System.out.println(“C”);

}

}

คลาส A ขยาย C

{

โมฆะสาธารณะ disp()

{

System.out.println("A");

}

}

คลาส B ขยาย C

{

โมฆะสาธารณะ disp()

{

System.out.println("B");

}

}

คลาส D ขยาย A

{

โมฆะสาธารณะ disp()

{

System.out.println("D");

}

โมฆะคงที่สาธารณะหลัก (สตริง args[]){

D obj = ใหม่ D();

obj.disp();

}

}

เอาท์พุท:

ดี

หากคุณต้องการเรียนรู้เชิงลึกเกี่ยวกับการสืบทอดใน Java และแนวคิด OOP อื่นๆ เราขอแนะนำ Executive PG Program ของ upGrad ใน การพัฒนาซอฟต์แวร์จาก IIIT-Bangalore หลักสูตร 13 เดือนได้รับการออกแบบโดยผู้เชี่ยวชาญและคณาจารย์ในอุตสาหกรรมระดับโลกเพื่อสร้างความสามารถในเครื่องมือและซอฟต์แวร์มากกว่า 30 รายการ ประกอบด้วยเนื้อหามากกว่า 400 ชั่วโมง กรณีศึกษาและโครงการที่เกี่ยวข้องกับอุตสาหกรรมมากกว่า 30 รายการ และเซสชันสดมากกว่า 10 รายการเพื่อช่วยให้คุณบรรลุผลตามที่ต้องการ หลักสูตรนี้นำเสนอความเชี่ยวชาญพิเศษสามอย่าง ได้แก่ การพัฒนาฟูลสแตก การพัฒนาแบ็คเอนด์บนคลาวด์ และความปลอดภัยทางไซเบอร์

สำรองที่นั่งในโปรแกรมวันนี้!

มรดกสี่ประเภทคืออะไร?

การสืบทอดสี่ประเภทใน Java คือ: 1. การสืบทอดตามลำดับชั้น 2. การสืบทอดแบบไฮบริด 3. การสืบทอดเดี่ยว 4. การสืบทอดหลายระดับ

อธิบาย Polymorphism ใน Java

Polymorphism ใน Java เป็นแนวคิดการเขียนโปรแกรมเชิงวัตถุซึ่งวัตถุในโปรแกรมสามารถมีได้หลายรูปแบบ การทำเช่นนี้ทำให้อ็อบเจ็กต์เดียวทำสิ่งเดียวกันได้หลายวิธี

อธิบายมัลติเธรดใน Java

Multithreading ใน Java เป็นคุณลักษณะที่หลายส่วน (แต่ละส่วนเรียกว่า thread) ของโปรแกรมสามารถดำเนินการพร้อมกันได้ เพื่อให้สามารถใช้ CPU ได้อย่างเหมาะสมที่สุด