การนำไปใช้เทียบกับการยืดออก
Implements and Extends เป็นคีย์เวิร์ดสองคำที่พบในภาษาการเขียนโปรแกรม Java ที่มีวิธีการโอนฟังก์ชันการทำงานเพิ่มเติมไปยังคลาสใหม่ ใช้คีย์เวิร์ด Implements อย่างชัดเจนสำหรับการนำอินเทอร์เฟซไปใช้ ขณะที่คีย์เวิร์ด Extended ใช้สำหรับสืบทอดจากคลาส (super) โปรดทราบว่าแนวคิดของการสืบทอดและอินเทอร์เฟซมีอยู่ในภาษาการเขียนโปรแกรมเชิงวัตถุอื่นๆ ส่วนใหญ่ เช่น C และ VB. NET แต่มีไวยากรณ์หรือคำหลักที่แตกต่างกันสำหรับการนำแนวคิดเหล่านั้นไปใช้ บทความนี้เน้นเฉพาะคีย์เวิร์ด Implements และ Extends ที่กำหนดไว้ใน Java
ขยาย
คำหลัก Extends ใช้เพื่อนำแนวคิดของการสืบทอดในภาษาการเขียนโปรแกรม Java ไปใช้ การสืบทอดจะจัดเตรียมการใช้รหัสซ้ำโดยอนุญาตให้ขยายคุณสมบัติและพฤติกรรมของคลาสที่มีอยู่โดยคลาสที่กำหนดใหม่ เมื่อคลาสย่อยใหม่ (หรือคลาสที่ได้รับ) ขยายซูเปอร์คลาส (หรือคลาสพาเรนต์) คลาสย่อยนั้นจะสืบทอดแอตทริบิวต์และวิธีการทั้งหมดของซูเปอร์คลาส คลาสย่อยสามารถเลือกแทนที่ลักษณะการทำงาน (จัดเตรียมฟังก์ชันการทำงานใหม่หรือแบบขยายให้กับเมธอด) ที่สืบทอดมาจากคลาสพาเรนต์ คลาสย่อยไม่สามารถขยายซูเปอร์คลาสหลายคลาสใน Java ได้ ดังนั้น คุณจึงไม่สามารถใช้ส่วนขยายสำหรับการสืบทอดหลายรายการได้ เพื่อให้มีการสืบทอดหลายรายการ คุณต้องใช้อินเทอร์เฟซตามที่อธิบายไว้ด้านล่าง
เครื่องมือ
Implements คีย์เวิร์ดในภาษาการเขียนโปรแกรม Java ใช้สำหรับการติดตั้งอินเทอร์เฟซโดยคลาส อินเทอร์เฟซใน Java เป็นประเภทนามธรรมที่ใช้เพื่อระบุสัญญาที่คลาสควรใช้งาน ซึ่งใช้อินเทอร์เฟซนั้นโดยปกติอินเทอร์เฟซจะมีเฉพาะลายเซ็นเมธอดและการประกาศคงที่เท่านั้น อินเทอร์เฟซใดๆ ที่ใช้อินเทอร์เฟซเฉพาะควรใช้วิธีการทั้งหมดที่กำหนดไว้ในอินเทอร์เฟซ หรือควรประกาศเป็นคลาสนามธรรม ใน Java ประเภทของการอ้างอิงอ็อบเจ็กต์สามารถกำหนดเป็นประเภทอินเทอร์เฟซได้ แต่อ็อบเจกต์นั้นต้องเป็นโมฆะหรือควรเก็บอ็อบเจ็กต์ของคลาส ซึ่งใช้อินเทอร์เฟซนั้นโดยเฉพาะ การใช้คำสำคัญ Implements ใน Java คุณสามารถปรับใช้หลายอินเตอร์เฟสกับคลาสเดียว อินเทอร์เฟซไม่สามารถใช้อินเทอร์เฟซอื่นได้ อย่างไรก็ตาม อินเทอร์เฟซสามารถขยายคลาสได้
ความแตกต่างระหว่างการนำไปใช้และการขยาย
แม้ว่า Implements และ Extends จะเป็นคีย์เวิร์ดสองคำที่มีกลไกในการสืบทอดแอตทริบิวต์และพฤติกรรมไปยังคลาสในภาษาการเขียนโปรแกรม Java แต่ก็ใช้เพื่อวัตถุประสงค์ที่แตกต่างกันสองประการ คีย์เวิร์ด Implements ใช้สำหรับคลาสเพื่อใช้อินเทอร์เฟซบางอย่าง ในขณะที่คีย์เวิร์ด Extended ใช้สำหรับคลาสย่อยเพื่อขยายจากซูเปอร์คลาสเมื่อคลาสใช้อินเตอร์เฟส คลาสนั้นจำเป็นต้องใช้เมธอดทั้งหมดที่กำหนดไว้ในอินเตอร์เฟส แต่เมื่อคลาสย่อยขยายซูเปอร์คลาส คลาสนั้นอาจจะแทนที่เมธอดที่รวมอยู่ในคลาสพาเรนต์หรือไม่ก็ได้ สุดท้าย ข้อแตกต่างที่สำคัญอีกประการระหว่าง Implements และ Extends คือ คลาสสามารถใช้อินเทอร์เฟซได้หลายแบบ แต่สามารถขยายจาก super class เดียวใน Java เท่านั้น โดยทั่วไป การใช้ Implements (อินเทอร์เฟซ) ถือว่าดีกว่าเมื่อเทียบกับการใช้ Extends (การสืบทอด) ด้วยเหตุผลหลายประการ เช่น ความยืดหยุ่นที่สูงขึ้นและความสามารถในการลดการเชื่อมต่อให้เหลือน้อยที่สุด ดังนั้นในทางปฏิบัติ การเขียนโปรแกรมไปยังอินเทอร์เฟซจึงดีกว่าการขยายจากคลาสพื้นฐาน