ความแตกต่างระหว่าง Abstract Class และ Interface
บทคัดย่อคลาสและ Interface
คลาสนามธรรมและอินเทอร์เฟซเป็นโครงสร้างเชิงวัตถุสองแบบที่พบได้ในหลายภาษาเชิงวัตถุเช่น Java คลาสบทคัดย่ออาจถือได้ว่าเป็นแบบนามธรรมของคลาส (คอนกรีต) ทั่วไปในขณะที่อินเทอร์เฟซสามารถถือเป็นวิธีการในการทำสัญญาได้ คลาสนามธรรมคือคลาสที่ไม่สามารถเริ่มต้นได้ แต่สามารถขยายได้ อินเทอร์เฟซเป็นประเภทที่ต้องดำเนินการโดยคลาสอื่น ๆ ใน Java คลาสบทคัดย่อถูกประกาศใช้คำหลัก Abstract ขณะที่คำหลัก interface ใช้เพื่อกำหนดอินเทอร์เฟซ
บทคัดย่อคืออะไร?
โดยปกติแล้วคลาสบทคัดย่อหรือที่เรียกว่า Abstract Base Classes (ABC) ไม่สามารถสร้างอินเทอร์เฟซ (อินสแตนซ์ของคลาสนั้นไม่สามารถสร้างได้) ดังนั้นชั้นบทคัดย่อมีความหมายเฉพาะถ้ามีภาษาเขียนโปรแกรมรองรับการสืบทอด (ความสามารถในการสร้างคลาสย่อยจากการขยายชั้น) บทคัดย่อมักแสดงแนวคิดหรือเอนทิตี้แบบนามธรรมโดยใช้บางส่วนหรือไม่มีเลย ดังนั้นคลาสบทคัดย่อจึงทำหน้าที่เป็นชั้นผู้ปกครองที่มาจากชั้นเรียนย่อยเพื่อให้ชั้นย่อยสามารถแชร์คุณลักษณะที่ไม่สมบูรณ์ของชั้นผู้ปกครองและฟังก์ชันการทำงานได้เพื่อให้เสร็จสมบูรณ์
บทคัดย่ออาจมีวิธีการแบบนามธรรม Subclasses ที่ขยายคลาสนามธรรมอาจใช้ method Abstract (สืบทอด) เหล่านี้ ถ้าชั้นลูกใช้วิธีนามธรรมทั้งหมดดังกล่าวเป็นชั้นคอนกรีต แต่ถ้าไม่เช่นนั้นคลาสย่อยจะกลายเป็นคลาส Abstract ทั้งหมดนี้หมายความว่าเมื่อโปรแกรมเมอร์เสนอชื่อคลาสเป็นบทคัดย่อเธอบอกว่าชั้นเรียนจะไม่สมบูรณ์และจะมีองค์ประกอบที่จำเป็นต้องทำโดยชั้นเรียนที่สืบทอดมา นี่เป็นวิธีที่ดีในการสร้างสัญญาระหว่างสองโปรแกรมเมอร์ซึ่งช่วยลดความยุ่งยากในการพัฒนาซอฟต์แวร์ โปรแกรมเมอร์ที่เขียนโค้ดเพื่อสืบทอดต้องปฏิบัติตามคำจำกัดความของคำจำกัดความ (แต่แน่นอนว่าจะสามารถใช้งานได้เอง)
อินเทอร์เฟซคืออะไร?
อินเทอร์เฟซเป็นแบบนามธรรมที่ใช้เพื่อระบุสัญญาที่ควรจะนำมาใช้โดยคลาสที่ใช้อินเทอร์เฟซดังกล่าว คำสำคัญ interface ใช้เพื่อกำหนดอินเทอร์เฟซและคำหลัก Implements ใช้สำหรับการติดตั้งอินเทอร์เฟซโดยคลาส (ในภาษาการเขียนโปรแกรมภาษาจาวา) โดยปกติอินเทอร์เฟซจะมีลายเซ็นของวิธีการและการประกาศคงที่เท่านั้น อินเทอร์เฟซใด ๆ ที่ใช้อินเทอร์เฟซเฉพาะควรใช้วิธีการทั้งหมดที่กำหนดไว้ในอินเทอร์เฟซหรือควรจะประกาศเป็นชั้นนามธรรม ใน Java ประเภทของการอ้างอิงอ็อบเจ็กต์สามารถกำหนดเป็นประเภทอินเทอร์เฟซได้ แต่วัตถุนั้นต้องเป็นโมฆะหรือควรถือวัตถุของคลาสซึ่งใช้อินเตอร์เฟสเฉพาะนั้นการใช้คำหลัก Implements ใน Java คุณสามารถใช้อินเทอร์เฟซหลายรูปแบบกับชั้นเดียวได้
อะไรคือความแตกต่างระหว่าง Abstract Class กับ Interface?
คลาสบทคัดย่อมักจะแสดงแนวคิดแบบ abstract หรือเอนทิตีที่มีการใช้งานบางส่วนหรือไม่มีเลย ในทางกลับกันอินเทอร์เฟซเป็นแบบนามธรรมที่ใช้ในการระบุสัญญาที่ควรจะนำมาใช้โดยการเรียน คลาสนามธรรมควรสืบทอด (หรือขยาย) ในขณะที่ควรใช้อินเทอร์เฟซ บทคัดย่ออาจมีวิธีการแบบนามธรรมในขณะที่อินเทอร์เฟซควรประกอบด้วยวิธีการแบบนามธรรมเท่านั้น คลาสบทคัดย่อสามารถมีตัวแปรได้ แต่อินเทอร์เฟซสามารถกำหนดค่าคงที่เท่านั้น คลาสไม่สามารถสืบทอดจากคลาสนามธรรมได้มากกว่าหนึ่งคลาส แต่สามารถใช้อินเทอร์เฟซได้หลายแบบ อินเทอร์เฟซไม่สามารถใช้อินเทอร์เฟซอื่นได้ อย่างไรก็ตามอินเทอร์เฟซสามารถขยายคลาสได้