ความแตกต่างระหว่างคลาสนามธรรมกับการสืบทอด

ความแตกต่างระหว่างคลาสนามธรรมกับการสืบทอด
ความแตกต่างระหว่างคลาสนามธรรมกับการสืบทอด
Anonim

นามธรรมกับมรดก

Abstract class and Inheritance เป็นแนวคิดเชิงวัตถุที่สำคัญสองแนวคิดที่พบในภาษาโปรแกรมเชิงวัตถุมากมาย เช่น Java คลาสนามธรรมถือได้ว่าเป็นรุ่นนามธรรมของคลาสปกติ (คอนกรีต) ในขณะที่การสืบทอดอนุญาตให้คลาสใหม่สามารถขยายคลาสอื่นได้ คลาสนามธรรมเป็นคลาสที่ไม่สามารถเริ่มต้นได้ แต่สามารถขยายได้ ดังนั้นคลาสนามธรรมจึงมีความหมายก็ต่อเมื่อภาษาการเขียนโปรแกรมรองรับการสืบทอด ใน Java คลาส Abstract ถูกประกาศโดยใช้คีย์เวิร์ด Abstract ในขณะที่คีย์เวิร์ด Extends ใช้สำหรับสืบทอดจากคลาส (super)

บทคัดย่อคืออะไร

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

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

มรดกคืออะไร

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

Abstract Class กับ Inheritance ต่างกันอย่างไร

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

โพสต์ที่เกี่ยวข้อง:

ความแตกต่างระหว่างคลาสนามธรรมกับคลาสคอนกรีต

ความแตกต่างระหว่างเสมือนจริงและนามธรรม

ความแตกต่างระหว่างคลาสนามธรรมและส่วนต่อประสาน

ความแตกต่างระหว่างการนำไปใช้และการขยาย

ความแตกต่างระหว่างกราฟกับต้นไม้

Filed Under: Programming Tagged with: ABC, นามธรรม, คลาสพื้นฐานนามธรรม, คลาสนามธรรม, คลาสนามธรรม, คีย์เวิร์ดนามธรรม, วิธีการแบบนามธรรม, คลาสที่เป็นรูปธรรม, ขยายคีย์เวิร์ด, การสืบทอด, คลาสการสืบทอด, คลาสที่สืบทอด, Java, การสืบทอดหลายรายการ, แนวคิดเชิงวัตถุ, คลาสปกติ, ซูเปอร์คลาส

เกี่ยวกับผู้แต่ง: Indika

Indika, BSc. Eng, MSECE Computer Engineering, PhD. วิทยาการคอมพิวเตอร์เป็นผู้ช่วยศาสตราจารย์และมีความสนใจด้านการวิจัยในสาขาชีวสารสนเทศ ชีววิทยาเชิงคำนวณ และการประมวลผลภาษาธรรมชาติทางชีวการแพทย์

ความคิดเห็น

  1. เจสันพูดว่า

    30 สิงหาคม 2560 เวลา 13:25 น.

    ขอบคุณที่อธิบายความแตกต่าง คำถามของฉันได้รับการแก้ไขแล้ว

    ตอบกลับ

  2. ออสพูดว่า

    10 พฤษภาคม 2562 เวลา 15:04 น.

    คำตอบที่ดีที่สุดบนเว็บ ครูไม่ได้อธิบายเรื่องไร้สาระและไม่มีเหตุผล โมโนโทน mf นี่คือวิธีที่คุณอธิบายแนวคิด

    ตอบกลับ

ทิ้งคำตอบ ยกเลิกการตอบ

ที่อยู่อีเมลของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องกรอกมีเครื่องหมาย

คอมเมนต์

ชื่อ

อีเมล

เว็บไซต์

ขอบทความ
ขอบทความ

กระทู้แนะนำ

ความแตกต่างระหว่างไวรัสโคโรน่ากับอาการหวัด

ความแตกต่างระหว่างไวรัสโคโรน่ากับซาร์ส

ความแตกต่างระหว่างไวรัสโคโรน่ากับไข้หวัดใหญ่

ความแตกต่างระหว่างไวรัสโคโรน่ากับโควิด 19

คุณอาจจะชอบ

ความแตกต่างระหว่างไซบีเรียนฮัสกีกับมาลามิวท์

ความแตกต่างระหว่างแคลคูลัส AB และ BC