ความแตกต่างระหว่างคลาสนามธรรมและอินเทอร์เฟซใน 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));
}
}

