ใน Java นามธรรมสามารถทำได้โดยใช้คลาสนามธรรมและอินเทอร์เฟซ คลาสนามธรรมประกอบด้วยเมธอดนามธรรมซึ่งคลาสลูก ต่อไปนี้เป็นข้อแตกต่างที่สำคัญระหว่างคลาสนามธรรมและคลาสที่เป็นรูปธรรม
ซีเนียร์ เลขที่ | Key | คลาสนามธรรม | คลาสคอนกรีต |
---|---|---|---|
1 | วิธีการที่รองรับ | คลาสนามธรรมสามารถมีได้ทั้งวิธีนามธรรมและรูปธรรม | คลาสคอนกรีตสามารถมีได้เฉพาะวิธีที่เป็นรูปธรรมเท่านั้น แม้แต่วิธีการที่เป็นนามธรรมเพียงวิธีเดียวก็ทำให้คลาสเป็นนามธรรมได้ |
2 | อินสแตนซ์ | คลาสนามธรรมไม่สามารถสร้างอินสแตนซ์ได้โดยใช้คีย์เวิร์ดใหม่ | คลาสคอนกรีตสามารถสร้างอินสแตนซ์ได้โดยใช้คีย์เวิร์ดใหม่ |
3 | วิธีนามธรรม | คลาสนามธรรมอาจมีหรือไม่มีวิธีการที่เป็นนามธรรมก็ได้ | คลาสคอนกรีตไม่สามารถมีวิธีการที่เป็นนามธรรมได้ |
4 | รอบชิงชนะเลิศ | คลาสนามธรรมไม่สามารถประกาศเป็นคลาสสุดท้ายได้ | ชั้นคอนกรีตสามารถประกาศขั้นสุดท้ายได้ |
5 | คำหลัก | คลาสนามธรรมที่ประกาศโดยใช้คำสำคัญที่เป็นนามธรรม | คลาสคอนกรีตไม่มีคีย์เวิร์ดที่เป็นนามธรรมในระหว่างการประกาศ |
6 | การสืบทอด | คลาสนามธรรมสามารถสืบทอดคลาสอื่นโดยใช้คีย์เวิร์ดขยายและใช้งานอินเทอร์เฟซ | อินเทอร์เฟซสามารถสืบทอดได้เฉพาะอินเทอร์เฟซเท่านั้น |
7 | อินเทอร์เฟซ | คลาสนามธรรมไม่สามารถใช้อินเทอร์เฟซเพียงอย่างเดียวได้ จำเป็นต้องมีคลาสลูกเพื่อให้สามารถใช้อินเทอร์เฟซสำหรับการสร้างอินสแตนซ์ได้ | อินเทอร์เฟซสามารถใช้งานได้ง่าย |
ตัวอย่างคลาสนามธรรมกับคลาสคอนกรีต
JavaTester.java
public class JavaTester { public static void main(String args[]) { Cat lion = new Lion(); lion.eat(); } } abstract class Cat { abstract public void eat(); } class Lion extends Cat{ public void eat(){ System.out.println("Lion eats"); } }
ผลลัพธ์
Lion eats