توضیحات و ویژگی ها
در این مطلب به مقایسه و بررسی اینترفیس (interface) ها با کلاس های ابستراکت و ویژگی آنها در کاتلین پرداختیم و همچنین اینترفیس های تابعی در کاتلین رو بررسی کردیم.
مشابه کلاس های ابستراکت در اینترفیس (interface) ها، میتونیم توابع concrete (کامل) و توابع abstract تعریف کنیم.
در اینترفیس ها نمیتونیم کانستراکتور تعریف کنیم؛ چون اینترفیس ها کانستراکتور ندارن پس پراپرتی ها باید abstract باشن مگه پراپرتی های val که تابع getter دارن.
هر اینترفیس میتونه از یک یا چند اینترفیس ارث بری کنه.
همانند کلاس های ابستراکت از اینترفیس ها نیز نمیشه نمونه (شی) سازی کرد.
هر کلاسی میتونه از یک کلاس وچند اینترفیس ارث بری کنه.
استفاده از اینترفیس
به دو روش میتونیم از اینترفیس استفاده کنیم:
۱- ارث بری از اینترفیس
در این روش مانند قسمت قبل که اشاره شد اینترفیس رو تعریف میکنیم و ازش توسط کلاس یا اینترفیس دیگه ارث بری میکنیم.
۲- پیاده سازی مستقیم اینترفیس
میتونیم اینترفیس رو مانند زیر در کد پیادهسازی کنیم:
اینترفیس های تابعی
اینترفیس هایی که فقط یک تابع دارن میتونیم به صورت تابعی داخل کد پیاده سازیشون کنیم به این اینترفیس ها Single Abstract Method Interface (SAM) نیز گفته میشه.
برای اینکه یک اینترفیس تابعی باشه باید قبل از کلیدواژه ی اینترفیس از کلید واژه ی fun نیز استفاده کنیم.
در مثال زیر اینترفیس رو به دو روش معمولی و تابعی پیادهسازی کردیم:
خلاصه
در اینترفیس ها در کاتلین مانند کلاس های ابستراکت هم تابع ابستراکت میتونیم تعریف کنیم هم تابع کامل.
در اینترفیس ها نمیتونیم کانستراکتور داشته باشیم.
در اینترفیس ها نمیتونیم پراپرتی تعریف کنیم مگه پراپرتی نوع val با تابع getter باشه.
هر اینترفیس میتونه از یک یا چند اینترفیس ارث ببره.
هر کلاسی علاوه بر یک کلاس از یک یا چند اینترفیس میتونه ارث ببره.
علاوه بر ارث بری میتونیم اینترفیس ها رو داخل کد پیادهسازی کنیم.
اینترفیس هایی که فقط یک تابع ابستراکت دارند رو میتونیم به صورت تابعی پیادهسازی کنیم که بهشون اینترفیس های تابعی و یا Single Abstract Method Interface (SAM) گفته میشه.