Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

ความแตกต่างระหว่าง Abstract Class และ Interface ใน C# Program


ดังที่เราทุกคนทราบดีว่า 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 ประสิทธิภาพ เนื่องจากคลาสนามธรรมมีเมธอดของมันและการใช้งานจริง สำหรับการปรับใช้เมธอดนามธรรม คลาสนี้มีการอ้างอิงสำหรับคลาสการนำไปใช้ ดังนั้นประสิทธิภาพจึงเร็วกว่าเมื่อเทียบกับอินเทอร์เฟซ ในทางกลับกัน ประสิทธิภาพของอินเทอร์เฟซนั้นช้าเพราะต้องใช้เวลาในการค้นหาเมธอดจริงในคลาสที่เกี่ยวข้อง