تفاوت Interface و Class در سیشارپ
تفاوت Interface و Class در سیشارپ
مقدمه
در زبان برنامهنویسی #C، یکی از موضوعات پایهای و در عین حال بسیار مهم، تفاوت میان Interface و Class است. بسیاری از برنامهنویسان تازهکار هنگام طراحی نرمافزار با این پرسش مواجه میشوند که چه زمانی از کلاس استفاده کنند و چه زمانی اینترفیس. در این مقاله به بررسی دقیق تفاوتها، کاربردها و مثالهای عملی میپردازیم.
( توضیحات کامل و آموزش ویدیویی این مبحث در دوره جامع برنامهنویسی وب وجود دارد.)
تعریف Class
کلاس در سیشارپ یک قالب (Blueprint) برای ساخت اشیا (Object) است. کلاس میتواند:
فیلد (Field) داشته باشد
متد (Method) داشته باشد
سازنده (Constructor) داشته باشد
پیادهسازی (Implementation) واقعی از رفتارها ارائه دهد
مثال ساده:
کلاسها پایهایترین عنصر شیءگرایی هستند و امکان ایجاد نمونه (Instance) را فراهم میکنند.
تعریف Interface
اینترفیس یک قرارداد (Contract) است. یعنی فقط مشخص میکند که یک کلاس چه رفتارهایی باید داشته باشد، ولی خودش پیادهسازی نمیکند.
مثال:
هر کلاسی که این اینترفیس را پیادهسازی کند، موظف است متد Drive را داشته باشد.
(🔔 توضیحات کامل و سناریوهای کاربردی اینترفیس در دوره جامع برنامهنویسی وب بررسی شدهاند.)
تفاوتهای کلیدی Class و Interface
| ویژگی | Class | Interface |
|---|---|---|
| پیادهسازی (Implementation) | دارد | ندارد (فقط قرارداد) |
| امکان ایجاد شیء | بله | خیر |
| وراثت (Inheritance) | از یک کلاس دیگر به ارث میبرد | میتواند توسط چندین کلاس پیادهسازی شود |
| اعضا | فیلد، متد، سازنده، پراپرتی و ... | فقط متد، پراپرتی، ایونت بدون بدنه |
| چندگانگی (Multiple Inheritance) | پشتیبانی نمیشود | میتوان چندین اینترفیس را در یک کلاس پیادهسازی کرد |
مثال ترکیبی
فرض کنید میخواهیم هم از مزایای کلاس استفاده کنیم و هم از انعطافپذیری اینترفیس:
Car یک کلاس واقعی است که رفتار IVehicle را پیادهسازی کرده.
نتیجهگیری
کلاس برای تعریف ساختار و پیادهسازی واقعی رفتارها به کار میرود.
اینترفیس برای تعریف قرارداد و ایجاد انعطاف در طراحی استفاده میشود.
استفاده درست از هر کدام بستگی به معماری پروژه دارد؛ اگر نیاز به چندگانگی یا جداسازی وابستگیها دارید، اینترفیس گزینه مناسبی است.
(🔔 برای درک عمیقتر این مفاهیم، همراه با تمرین عملی و پروژه واقعی، میتوانید به دوره جامع برنامهنویسی وب مراجعه کنید.)
