นามธรรมถือเป็นหนึ่งในคุณสมบัติที่สำคัญที่สุดของการเขียนโปรแกรมเชิงวัตถุ ช่วยซ่อนความซับซ้อนในการใช้งานโดยนำเสนอฟังก์ชันการทำงานผ่านอินเทอร์เฟซที่สามารถเข้าถึงได้
เพื่อให้บรรลุถึงนามธรรมใน Java คลาสนามธรรมและอินเทอร์เฟซจึงถูกนำมาใช้กันอย่างแพร่หลาย การประยุกต์ใช้คลาสนามธรรมและอินเทอร์เฟซแตกต่างกัน
ประเด็นที่สำคัญ
- คลาสนามธรรมอนุญาตให้มีการใช้งานบางส่วน ในขณะที่อินเทอร์เฟซไม่มีการนำไปใช้งาน
- คลาสสามารถสืบทอดคลาสนามธรรมได้เพียงคลาสเดียว แต่ใช้หลายอินเทอร์เฟซ
- คลาสนามธรรมสามารถมีคอนสตรัคเตอร์ ฟิลด์ และเมธอดที่ไม่ใช่นามธรรมได้ ในขณะที่อินเทอร์เฟซไม่สามารถทำได้
Abstract Class vs Interface ใน Java
ความแตกต่างระหว่างคลาสนามธรรมและอินเทอร์เฟซใน JJava ก็คือคลาสนามธรรมอ้างอิงถึงประเภทที่ผู้ใช้กำหนดซึ่งทำงานเป็นพิมพ์เขียวเพื่อสร้างวัตถุ คลาสนามธรรมมีวิธีและคุณสมบัติที่แสดงถึงพฤติกรรมและสถานะของวัตถุ ในทางกลับกัน อินเทอร์เฟซหมายถึงประเภทที่ผู้ใช้กำหนดซึ่งสามารถมีชุดของลายเซ็นวิธีการและค่าคงที่ของฟิลด์ที่ถูกแทนที่โดยคลาสที่นำมาใช้โดยอินเทอร์เฟซ
คลาสนามธรรมหมายถึงคลาสที่มีคีย์เวิร์ดที่เป็นนามธรรมในการประกาศ ช่วยในการพัฒนาพิมพ์เขียวสำหรับชั้นเรียนที่เป็นรูปธรรม
ควรมีวิธีนามธรรมอย่างน้อยหนึ่งวิธี เช่น วิธีที่ไม่มีเนื้อความ คลาสนามธรรมอาจมีวิธีที่เป็นรูปธรรมได้หลายวิธี อนุญาตให้ผู้ใช้ใช้รหัสซ้ำได้
ส่วนต่อประสานหมายถึงพิมพ์เขียวที่ใช้ในการใช้คลาส วิธีการที่เป็นรูปธรรมหรือวิธีการที่มีรหัสจะไม่รวมอยู่ในอินเทอร์เฟซ เฉพาะวิธีการนามธรรมหรือวิธีการที่ไม่มีรหัสใด ๆ ที่รวมอยู่ในส่วนต่อประสาน
การสร้างอินสแตนซ์ของอินเทอร์เฟซเป็นไปไม่ได้ แต่คลาสอินเทอร์เฟซที่นำคลาสไปใช้สามารถสร้างอินสแตนซ์ได้อย่างง่ายดาย
ตารางเปรียบเทียบ
พารามิเตอร์ของการเปรียบเทียบ | คลาสนามธรรมในภาษาจาวา | อินเทอร์เฟซใน Java |
---|---|---|
คำหลัก | สำหรับการประกาศคลาสนามธรรมจะใช้คีย์เวิร์ดนามธรรม | สำหรับการประกาศอินเตอร์เฟส จะใช้คีย์เวิร์ดของอินเตอร์เฟส |
วิธีการ | ทั้งวิธีการที่ไม่ใช่นามธรรมและนามธรรมสามารถมีอยู่ในคลาสนามธรรม | เฉพาะวิธีนามธรรมเท่านั้นที่สามารถนำเสนอได้ในส่วนต่อประสาน นอกจากนี้ยังสามารถมีวิธีการแบบคงที่และเริ่มต้นได้ตั้งแต่นั้นมา 8 Java. |
ตัวแปร | คลาสนามธรรมไม่รองรับการสืบทอดหลายรายการ | เฉพาะตัวแปรสุดท้ายและคงที่เท่านั้นที่สามารถมีได้ในอินเทอร์เฟซ |
มรดก | อินเทอร์เฟซรองรับการสืบทอดหลายรายการ | Java อื่นสามารถขยายได้และคลาสนามธรรมสามารถใช้อินเทอร์เฟซ Java หลายอันได้ |
นามสกุล | เฉพาะอินเทอร์เฟซอื่นใน Java เท่านั้นที่สามารถขยายได้โดยอินเทอร์เฟซ | เฉพาะอินเทอร์เฟซอื่นใน Java เท่านั้นที่มีโอกาสที่จะขยายโดยอินเทอร์เฟซ |
Abstract Class ใน Java คืออะไร
ใน Java คลาสนามธรรมคือคลาสที่ประกาศโดยคีย์เวิร์ดนามธรรม ทั้งวิธีการที่ไม่ใช่นามธรรมและนามธรรมสามารถรวมอยู่ในคลาสนามธรรมใน Java
โดยทั่วไป คลาสนามธรรมหมายถึงเทมเพลตที่ใช้จัดเก็บวิธีข้อมูลการเขียนโปรแกรมที่เป็นประโยชน์และสมาชิก ใน Java การสร้างอินสแตนซ์ของคลาสนามธรรมไม่สามารถทำได้โดยตรง แทนที่จะเป็นเช่นนั้น คลาสนามธรรมสามารถจัดคลาสย่อยได้
คลาสนามธรรมช่วยให้นักพัฒนาสามารถซ่อนการใช้งานโค้ดได้ ซึ่งช่วยให้พวกเขาดำเนินการกระบวนการลบข้อมูลได้อย่างราบรื่น
นอกจากนี้ยังช่วยประหยัดเวลาในการเขียนโค้ดอีกด้วย วิธีการนามธรรมสามารถเรียกได้ทุกที่ในขณะที่เขียนโค้ดและหลีกเลี่ยงการทำซ้ำของโค้ด
ในขณะที่ใช้คลาสนามธรรมใน Java กฎที่สำคัญที่สุดคือ-
- ในขณะที่ประกาศคลาสนามธรรม การมีคีย์เวิร์ด "abstract" ถือเป็นสิ่งสำคัญมาก
- ใน Java การสร้างอินสแตนซ์ของคลาสนามธรรมไม่สามารถทำได้โดยตรง จำเป็นต้องมีวิธีนามธรรมอย่างน้อยหนึ่งวิธีในคลาสนามธรรม
- วิธีการสุดท้ายจะรวมอยู่ในคลาสนามธรรมด้วย
- เมธอดแบบสแตติกและคอนสตรัคเตอร์สามารถรวมอยู่ในคลาสนามธรรมได้
ข้อได้เปรียบหลักของคลาสนามธรรมใน Java คือมีประโยชน์มากในการเขียนโค้ดสั้น-ยาว และยังช่วยตัดโอกาสในการทำซ้ำโค้ดอีกด้วย นอกจากนี้ยังช่วยให้สามารถนำรหัสกลับมาใช้ใหม่ได้
อินเทอร์เฟซใน Java คืออะไร
เช่นเดียวกับคลาสนามธรรม นามธรรมใน Java สามารถมีตัวแปรและวิธีการได้ แต่ในอินเทอร์เฟซ วิธีการประกาศจะเป็นนามธรรมโดยค่าเริ่มต้น
มันระบุว่าคลาสนามธรรมต้องทำอย่างไรและอย่างไร ถือเป็นพิมพ์เขียวของคลาสนามธรรม มีชุดของวิธีการที่ชั้นเรียนอาจใช้ไม่ได้หรืออาจใช้
ส่วนต่อประสานใน Java ใช้สำหรับบรรลุสิ่งที่เป็นนามธรรมทั้งหมด นอกจากนี้ยังสามารถมีหลายการสืบทอดที่ไม่รองรับในคลาสนามธรรม
นอกจากนี้ อินเทอร์เฟซยังใช้เพื่อให้เกิดการเชื่อมต่อแบบหลวมๆ อีกด้วย อินเทอร์เฟซใช้กันอย่างแพร่หลายในรูปแบบการออกแบบ Java และสามารถทำหน้าที่ได้
วิธีการเชื่อมต่อไม่มีใคร เป็นกลไกที่ใช้เป็นหลักในการรับมรดกและนามธรรมหลายรายการใน Java
คุณสมบัติหลักของอินเทอร์เฟซ Java คือ -
- อินเทอร์เฟซใน Java เป็นนามธรรมอย่างสมบูรณ์ คำหลักบทคัดย่อไม่จำเป็นในขณะที่ประกาศส่วนต่อประสานใน Java
- วิธีการเชื่อมต่อแต่ละวิธียังเป็นนามธรรมอย่างสมบูรณ์ ด้วยเหตุนี้ จึงไม่จำเป็นต้องใช้คำหลักที่เป็นนามธรรมในขณะที่ประกาศเมธอดอินเตอร์เฟส
- วิธีการเชื่อมต่อแต่ละวิธีเป็นแบบสาธารณะอย่างสมบูรณ์
ข้อได้เปรียบหลักของอินเทอร์เฟซใน Java คือสามารถใช้เพื่อให้ได้ข้อมูลที่เป็นนามธรรมและยังสามารถใช้เพื่อรองรับมรดก ฟังก์ชันต่างๆ ใน Java นอกจากนี้ยังใช้ในข้อต่อแบบหลวม
ความแตกต่างหลักระหว่างคลาสนามธรรมและส่วนต่อประสานใน Java
- ทั้งวิธีการที่ไม่ใช่นามธรรมและนามธรรมสามารถมีอยู่ในคลาสนามธรรม ในทางกลับกัน เฉพาะวิธีเชิงนามธรรมเท่านั้นที่สามารถแสดงได้ในอินเทอร์เฟซ นอกจากนี้ยังสามารถมีเมธอดแบบคงที่และแบบดีฟอลต์ตั้งแต่ Java 8
- คลาสนามธรรมสามารถมีตัวแปรที่ไม่ใช่สแตติก สแตติก ตัวแปรสุดท้าย และตัวแปรสุดท้าย เฉพาะตัวแปรสุดท้ายและคงที่เท่านั้นที่สามารถมีได้ในอินเทอร์เฟซ
- สำหรับการประกาศคลาสนามธรรมจะใช้คีย์เวิร์ดนามธรรม สำหรับการประกาศอินเตอร์เฟส จะใช้คีย์เวิร์ดของอินเตอร์เฟส
- คลาสนามธรรมไม่รองรับการสืบทอดหลายรายการ อินเทอร์เฟซรองรับการสืบทอดหลายรายการ
- Java อื่นสามารถขยายได้และอินเทอร์เฟซ Java หลายรายการสามารถนำไปใช้โดยคลาสนามธรรม ถึงกระนั้น มีเพียงอินเทอร์เฟซอื่นใน Java เท่านั้นที่มีโอกาสที่จะขยายโดยอินเทอร์เฟซ
- https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=abstract+class+in+java&btnG=#d=gs_qabs&u=%23p%3DW3WgwQb0NOAJ
- https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=interface+in+java&btnG=#d=gs_qabs&u=%23p%3Dzhwh3VcdqSkJ
อัพเดตล่าสุด : 11 มิถุนายน 2023
Sandeep Bhandari สำเร็จการศึกษาระดับปริญญาตรี สาขาวิศวกรรมคอมพิวเตอร์จาก Thapar University (2006) เขามีประสบการณ์ 20 ปีในสาขาเทคโนโลยี เขามีความสนใจในด้านเทคนิคต่างๆ รวมถึงระบบฐานข้อมูล เครือข่ายคอมพิวเตอร์ และการเขียนโปรแกรม คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเขาได้จากเขา หน้าไบโอ.
เป็นบทความที่น่าประทับใจ คำอธิบายมีความชัดเจนและกระชับมาก ทำได้ดีมาก.
เราขอหยุดหัวเราะกับการเขียนของนักวิชาการสักครู่ได้ไหม? เป็นบทความที่ตลก แต่เป็นบทความที่ดี
การเปรียบเทียบแบบเคียงข้างกันระหว่างคลาสนามธรรมและอินเทอร์เฟซนั้นค่อนข้างมีประโยชน์ ฉันกำลังมองหาบทความเช่นนี้
ฉันเชื่อว่าบทความนี้สามารถช่วยฉันได้ในโครงการสุดท้ายของฉัน แต่มันเป็นข้อมูลอ้างอิงที่ดีสำหรับอันถัดไป
ฉันไม่คิดว่าบทความนี้มีประโยชน์อย่างที่คุณพูด ฉันคิดว่ามันขาดคำอธิบายเชิงลึก
จะดีกว่าถ้าคุณให้ตัวอย่างโค้ดบางส่วน แม้ว่าคำอธิบายจะดีก็ตาม