ความแตกต่างระหว่างคลาสนามธรรมและอินเทอร์เฟซใน Java
ความแตกต่างที่สำคัญระหว่างคลาสนามธรรมและอินเทอร์เฟซใน Java
- ในอินเทอร์เฟซ คลาสสามารถใช้หลายอินเทอร์เฟซได้ ในขณะที่คลาสสามารถสืบทอดคลาสนามธรรมได้เพียงคลาสเดียวเท่านั้น
- ในอินเทอร์เฟซไม่มีตัวดัดแปลงการเข้าถึง ทุกอย่างที่กำหนดไว้ภายในอินเทอร์เฟซจะถือว่ามีตัวแก้ไขสาธารณะ ในขณะที่คลาสนามธรรมสามารถมีตัวแก้ไขการเข้าถึงได้
- อินเทอร์เฟซไม่สามารถมีเขตข้อมูลได้ ในขณะที่คลาสนามธรรมสามารถมีเขตข้อมูลได้
- อินเทอร์เฟซช่วยกำหนดความสามารถต่อพ่วงของคลาส ในขณะที่คลาสนามธรรมจะกำหนดเอกลักษณ์ของคลาส
Abstract Class คืออะไร?
คลาสที่มีคำสำคัญ abstract ในการประกาศเรียกว่า abstract class คลาส abstract ควรมีเมธอด abstract ตั้งแต่ 0 เมธอดขึ้นไป กล่าวคือ เมธอดที่ไม่มีเนื้อหา คลาส abstract สามารถมีเมธอดเฉพาะเจาะจงได้หลายเมธอด คลาส abstract ช่วยให้คุณสร้างบลูพริ้นท์สำหรับคลาสเฉพาะเจาะจงได้ แต่คลาสที่สืบทอดมาควรใช้เมธอด abstract ไม่สามารถสร้างอินสแตนซ์ของคลาส abstract ได้
เหตุผลสำคัญในการใช้อินเทอร์เฟซ
- อินเทอร์เฟซถูกนำมาใช้เพื่อให้บรรลุ สิ่งที่เป็นนามธรรม.
- ออกแบบมาเพื่อรองรับการแก้ไขวิธีการแบบไดนามิก ณ รันไทม์
- ช่วยให้คุณบรรลุการมีเพศสัมพันธ์ที่หลวม
- ช่วยให้คุณสามารถแยกคำจำกัดความของวิธีการออกจากลำดับชั้นการสืบทอด
เหตุผลสำคัญในการใช้คลาสนามธรรม
- คลาสนามธรรมเสนอฟังก์ชันการทำงานเริ่มต้นสำหรับคลาสย่อย
- จัดทำเทมเพลตสำหรับชั้นเรียนเฉพาะในอนาคต
- ช่วยคุณกำหนดอินเทอร์เฟซทั่วไปสำหรับคลาสย่อย
- คลาสนามธรรมช่วยให้โค้ดสามารถนำกลับมาใช้ใหม่ได้
อินเทอร์เฟซคืออะไร?
อินเทอร์เฟซคือโครงร่างที่สามารถใช้เพื่อนำคลาสไปใช้งาน อินเทอร์เฟซไม่มีเมธอดที่เป็นรูปธรรมใดๆ (เมธอดที่มีโค้ด) เมธอดทั้งหมดของอินเทอร์เฟซเป็นเมธอดที่เป็นนามธรรม ไม่สามารถสร้างอินสแตนซ์อินเทอร์เฟซได้ อย่างไรก็ตาม คลาสที่นำอินเทอร์เฟซไปใช้งานสามารถสร้างอินสแตนซ์ได้ อินเทอร์เฟซไม่มีตัวแปรอินสแตนซ์ แต่สามารถมีตัวแปรสุดท้ายแบบคงที่สาธารณะได้ (เช่น ตัวแปรคลาสคงที่)
ความแตกต่างระหว่างอินเทอร์เฟซและคลาสนามธรรมใน Java
คลาสนามธรรมอนุญาตให้คุณสร้างฟังก์ชันการทำงานที่คลาสย่อยสามารถนำไปใช้หรือแทนที่ได้ ในขณะที่อินเทอร์เฟซอนุญาตให้คุณระบุฟังก์ชันการทำงานเท่านั้น แต่ไม่อนุญาตให้นำไปใช้ คลาสสามารถขยายคลาสนามธรรมได้เพียงคลาสเดียวในขณะที่คลาสสามารถใช้หลายอินเทอร์เฟซได้
พารามิเตอร์ | อินเตอร์เฟซ | คลาสนามธรรม |
---|---|---|
ความเร็ว | ช้า | รวดเร็ว |
มรดกหลายรายการ | ใช้อินเทอร์เฟซต่างๆ | มีเพียงคลาสนามธรรมเดียวเท่านั้น |
โครงสร้าง | วิธีการเชิงนามธรรม | วิธีการเชิงนามธรรมและเป็นรูปธรรม |
ควรใช้เมื่อไร | การปรับปรุงในอนาคต | เพื่อหลีกเลี่ยงความเป็นอิสระ |
การสืบทอด/การนำไปปฏิบัติ | คลาสสามารถใช้หลายอินเทอร์เฟซได้ | คลาสสามารถสืบทอดคลาสนามธรรมได้เพียงคลาสเดียวเท่านั้น |
การใช้งานเริ่มต้น | ในขณะที่เพิ่มสิ่งใหม่ๆ ให้กับอินเทอร์เฟซ การค้นหา Implementors ทั้งหมดและ Implement สิ่งที่กำหนดไว้ใหม่ถือเป็นฝันร้าย | ในกรณีของ Abstract Class คุณสามารถใช้ประโยชน์จากการใช้งานเริ่มต้นได้ |
ตัวแก้ไขการเข้าถึง | อินเทอร์เฟซไม่มีตัวแก้ไขการเข้าถึง ทุกอย่างที่กำหนดไว้ภายในอินเทอร์เฟซถือเป็นตัวแก้ไขสาธารณะ | Abstract Class สามารถมีตัวแก้ไขการเข้าถึงได้ |
ควรใช้เมื่อไร | ควรใช้อินเทอร์เฟซเมื่อการใช้งานต่างๆ แชร์เฉพาะลายเซ็นวิธีการเท่านั้น ลำดับชั้นแบบโพลีมอร์ฟิกของประเภทค่า | ควรใช้เมื่อการใช้งานประเภทเดียวกันหลายอย่างมีพฤติกรรมร่วมกัน |
เขตข้อมูล | อินเทอร์เฟซไม่สามารถมีช่องข้อมูลได้ | ชั้นเรียนสามารถมีเขตข้อมูลได้ |
ค่าเริ่มต้นของการสืบทอดหลายรายการ | คลาสอาจใช้อินเทอร์เฟซมากมาย | คลาสสืบทอดคลาสนามธรรมเพียงคลาสเดียวเท่านั้น |
การดำเนินงาน | อินเทอร์เฟซเป็นแบบนามธรรมดังนั้นจึงไม่สามารถให้โค้ดใดๆ ได้ | คลาสนามธรรมสามารถให้โค้ดเริ่มต้นที่สมบูรณ์ซึ่งควรถูกแทนที่ |
การใช้ตัวดัดแปลงการเข้าถึง | คุณไม่สามารถใช้ตัวแก้ไขการเข้าถึงสำหรับวิธีการ คุณสมบัติ ฯลฯ | คุณสามารถใช้คลาสนามธรรมซึ่งมีตัวดัดแปลงการเข้าถึง |
การใช้ | อินเทอร์เฟซช่วยในการกำหนดความสามารถต่อพ่วงของคลาส | คลาสนามธรรมกำหนดเอกลักษณ์ของคลาส |
ฟิลด์ที่กำหนด | ไม่สามารถกำหนดฟิลด์ได้ | คลาสนามธรรมช่วยให้คุณสามารถกำหนดทั้งฟิลด์และค่าคงที่ได้ |
มรดก | อินเทอร์เฟซสามารถสืบทอดหลายอินเทอร์เฟซได้ แต่ไม่สามารถสืบทอดคลาสได้ | คลาสนามธรรมสามารถสืบทอดคลาสและหลายอินเทอร์เฟซได้ |
ตัวสร้างหรือตัวทำลาย | อินเทอร์เฟซไม่สามารถประกาศตัวสร้างหรือตัวทำลายได้ | คลาสนามธรรมสามารถประกาศตัวสร้างและตัวทำลายได้ |
ขีดจำกัดของส่วนขยาย | สามารถขยายอินเทอร์เฟซจำนวนเท่าใดก็ได้ | มันสามารถขยายได้เพียงคลาสเดียวหรือคลาสนามธรรมครั้งละหนึ่งคลาสเท่านั้น |
คำสำคัญที่เป็นนามธรรม | ในคีย์เวิร์ดอินเทอร์เฟซนามธรรม เป็นทางเลือกสำหรับการประกาศวิธีการเป็นนามธรรม | ในคลาสนามธรรม คีย์เวิร์ด abstract จำเป็นสำหรับการประกาศวิธีการเป็นนามธรรม |
ประเภทคลาส | อินเทอร์เฟซสามารถมีได้เฉพาะวิธีนามธรรมสาธารณะเท่านั้น | คลาสนามธรรมมีการป้องกันและวิธีการนามธรรมแบบสาธารณะ |
โค้ดตัวอย่างสำหรับ Interface และ Abstract Class ใน Java
ต่อไปนี้เป็นตัวอย่างโค้ดในการสร้างอินเทอร์เฟซและคลาสแบบนามธรรมใน Java
ไวยากรณ์อินเทอร์เฟซ
interface name{ //methods }
Java ตัวอย่างอินเทอร์เฟซ:
interface Pet { public void test(); } class Dog implements Pet { public void test() { System.out.println("Interface Method Implemented"); } public static void main(String args[]) { Pet p = new Dog(); p.test(); } }
ไวยากรณ์คลาสนามธรรม
abstract class name{ // code }
ตัวอย่างคลาสนามธรรม:
abstract class Shape { int b = 20; abstract public void calculateArea(); } public class Rectangle extends Shape { public static void main(String args[]) { Rectangle obj = new Rectangle(); obj.b = 200; obj.calculateArea(); } public void calculateArea() { System.out.println("Area is " + (b * b)); } }