ดังที่เราทุกคนทราบดีว่า C# เป็นโปรแกรมเชิงวัตถุเช่นเดียวกับ Java และให้การสนับสนุนอย่างเต็มที่สำหรับแนวคิดเชิงวัตถุ ได้แก่ Encapsulation, Abstraction, Inheritance และ Polymorphism ตรงกันข้ามกับ Abstraction ทั้งคลาสนามธรรมและส่วนต่อประสานกำลังออกมาในรูปเนื่องจากทั้งสองสิ่งนี้ให้นามธรรมในโปรแกรม C #
ในคลาสนามธรรม เราสามารถสร้างฟังก์ชันการทำงานและจำเป็นต้องดำเนินการโดยคลาสที่ได้รับ อินเทอร์เฟซช่วยให้เราสามารถกำหนดฟังก์ชันหรือฟังก์ชันต่างๆ ได้ แต่ไม่สามารถนำไปใช้ได้ คลาสที่ได้รับจะขยายส่วนต่อประสานและใช้งานฟังก์ชันเหล่านั้น
ต่อไปนี้เป็นข้อแตกต่างที่สำคัญระหว่าง Abstract Class และ Interface
ซีเนียร์ เลขที่ | คีย์ | คลาสนามธรรม | อินเทอร์เฟซ |
---|---|---|---|
1 | คำจำกัดความ | ในแง่ของคำจำกัดความมาตรฐาน คลาสนามธรรมคือตามแนวคิด ซึ่งเป็นคลาสที่ไม่สามารถสร้างอินสแตนซ์ได้ และมักจะถูกนำไปใช้เป็นคลาสที่มีฟังก์ชันเสมือน (นามธรรม) บริสุทธิ์อย่างน้อยหนึ่งฟังก์ชัน | ในทางกลับกัน Interface เป็นคำอธิบายว่าฟังก์ชันใดของสมาชิกในคลาส ซึ่งสืบทอดอินเทอร์เฟซนี้ นำไปปฏิบัติ อีกนัยหนึ่ง อินเทอร์เฟซอธิบายพฤติกรรมของคลาส |
2 | การนำไปใช้ | เช่นเดียวกับการออกแบบคลาสทั่วไปอื่นๆ ในคลาส C# Abstract ก็มีการใช้งานของตัวเองพร้อมกับการประกาศ | ในทางกลับกัน อินเทอร์เฟซสามารถมีได้เพียงลายเซ็นเท่านั้น ไม่สามารถนำไปใช้ได้ ในขณะที่การนำไปใช้นั้นถูกจัดเตรียมโดยคลาสที่นำไปใช้ |
3 | การสืบทอด | ตามข้อกำหนดใน C# คลาสสามารถขยายคลาสอื่นได้เพียงคลาสเดียว ดังนั้นคลาสนามธรรมจะไม่ได้รับมรดกหลายรายการ | ในทางกลับกัน ในกรณีของอินเทอร์เฟซ คลาสสามารถใช้อินเทอร์เฟซหลายตัวได้ ดังนั้นการสืบทอดหลายรายการจึงทำได้โดยอินเทอร์เฟซ |
4 | ตัวสร้าง | เช่นเดียวกับคลาสอื่นๆ ใน C# สำหรับคลาสนามธรรมการสร้างอินสแตนซ์ยังมีตัวสร้างซึ่งจัดเตรียมอินสแตนซ์ของคลาสนามธรรมเพื่อเข้าถึงเมธอดที่ไม่คงที่ | ในทางกลับกัน Interface ไม่มี Constructor ดังนั้นเราจึงไม่สามารถสร้างอินสแตนซ์ของอินเทอร์เฟซได้โดยตรง แม้ว่าเมธอดของมันสามารถเข้าถึงได้โดยการสร้างอินสแตนซ์ของคลาสที่นำไปใช้ |
5 | ตัวแก้ไข | เนื่องจากคลาสนามธรรมนั้นเหมือนกับคลาสทั่วไปอื่นๆ ใน C# ดังนั้นจึงมีตัวแก้ไขการเข้าถึงประเภทต่างๆ เช่น สาธารณะ ส่วนตัว การป้องกัน ฯลฯ | ในทางกลับกัน เนื่องจากอินเทอร์เฟซจำเป็นต้องได้รับการติดตั้งเพื่อให้วิธีการนำไปใช้โดยคลาสอื่นจึงมีได้เฉพาะตัวแก้ไขการเข้าถึงสาธารณะเท่านั้น |
6 | ประสิทธิภาพ | เนื่องจากคลาสนามธรรมมีเมธอดของมันและการใช้งานจริง สำหรับการปรับใช้เมธอดนามธรรม คลาสนี้มีการอ้างอิงสำหรับคลาสการนำไปใช้ ดังนั้นประสิทธิภาพจึงเร็วกว่าเมื่อเทียบกับอินเทอร์เฟซ | ในทางกลับกัน ประสิทธิภาพของอินเทอร์เฟซนั้นช้าเพราะต้องใช้เวลาในการค้นหาเมธอดจริงในคลาสที่เกี่ยวข้อง |