นามธรรมกับมรดก
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. วิทยาการคอมพิวเตอร์เป็นผู้ช่วยศาสตราจารย์และมีความสนใจด้านการวิจัยในสาขาชีวสารสนเทศ ชีววิทยาเชิงคำนวณ และการประมวลผลภาษาธรรมชาติทางชีวการแพทย์
ความคิดเห็น
-
เจสันพูดว่า
30 สิงหาคม 2560 เวลา 13:25 น.
ขอบคุณที่อธิบายความแตกต่าง คำถามของฉันได้รับการแก้ไขแล้ว
ตอบกลับ
-
ออสพูดว่า
10 พฤษภาคม 2562 เวลา 15:04 น.
คำตอบที่ดีที่สุดบนเว็บ ครูไม่ได้อธิบายเรื่องไร้สาระและไม่มีเหตุผล โมโนโทน mf นี่คือวิธีที่คุณอธิบายแนวคิด
ตอบกลับ
ทิ้งคำตอบ ยกเลิกการตอบ
ที่อยู่อีเมลของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องกรอกมีเครื่องหมาย
คอมเมนต์
ชื่อ
อีเมล
เว็บไซต์