• تهران -خیابان شریعتی - بالاتر از سه راه ملک - روبروی آتش نشانی - آرتارسانه
  • تلفن تماس: 02191303424

اینترفیس ها – interface در سالیدیتی

اینترفیس ها – interface در سالیدیتی

اینترفیس صرفاً یک قرارداد و پروتکل هست.

اگه چند کلاس مشابه داشته باشیم و بخواهیم کاری کنیم که از آن قرارداد تبعیت کنند، از اینترفیس استفاده می‌کنیم.

معنی اینترفیس یعنی مرتبط کننده. وقتی یک کلاس از یک اینترفیس استفاده می‌کند، ما مطمئن میشویم که اون کلاس یک سری ویژگی‌های مورد نظر ما را دارد.

interface ها اغلب در بالای قرارداد هوشمند یافت می شوند. آنها با استفاده از کلمه کلیدی “interface” شناسایی می شوند.

interface ها شامل امضاهای تابع بدون اجرای تعریف تابع است (جزئیات پیاده سازی اهمیت کمتری دارند).

می توانید از یک اینترفیس در قرارداد خود برای فراخوانی توابع در قرارداد دیگر استفاده کنید.

مثال زیر نمونه قرارداد هوشمند با interface IERC20 را نشان می دهد.
امضاهای تابع این interface در قالب لیست هستند و با نقطه ویرگول خاتمه می یابند. interface نیازی به بدنه (جزئیات پیاده سازی) هر تابع ندارد.
افزودن این رابط، توابع IERC20 را برای استفاده در قرارداد نمونه در دسترس قرار می دهد.

اینترفیس ها در برنامه نویسی بلاکچین در سناریوهایی که برنامه شما نیاز به توسعه پذیری دارد اما نمی خواهید پیچیدگی بیشتری ایجاد کنید بسیار مفید هستند. آنها تکرار کد و سربار را کاهش می دهند.

تفاوت اینترفیس و انتزاع در سالیدیتی

اینترفیسکلاس انتزاعی
فقط می‌تونه شامل Constant ها  و متدهای انتزاعی باشد

می‌تواند شامل Constant ها، پراپتی‌ها و متدهای انتزاعی باشد.

همچنین می‌تواند شامل متدهای دارای بدنه (متدهای عادی که در آن می‌توانیم کد بنویسیم) باشد.

همه متدها باید Public باشندمتدها و پراپرتی‌ها می‌تواند هر نوع سطح دیدی داشته باشند
می‌تواند توسط یک اینترفیس یا یک کلاس انتزاعی دیگه توسعه داده شود
interface myInterface extends xInterface { }
می‌تونه توسط یک کلاس انتزاعی دیگه توسعه داده بشه
وقتی یک اینترفیس توسط یک اینترفیس دیگر توسعه داده شود، لازم نیست متدهای اینترفیس والد توی اینترفیس فرزند پیاده‌سازی شود

وقتی یک کلاس عادی، از یک کلاس انتزاعی Extend بشه، کلاس فرزند باید همه متدهای انتزاعی کلاس والد رو پیاده‌سازی کنه

اما وقتی یک کلاس انتزاعی از یک کلاس انتزاعی دیگه Extend بشه، لازم نیست متدهای انتزاعی کلاس والد پیاده‌سازی بشه

یک کلاس یا یک اینترفیس می‌تواند یک یا چند اینترفیس رو پیاده‌سازی کندیک کلاس فقط می‌تواند یک کلاس دیگر رر Extend کند. و مهم نیست کلاس والد، کلاس عادی باشد یا انتزاعی
متدهایی که از یک اینترفیس در یک کلاس عادی پیاده‌سازی میشوند، باید سطح دید Public داشته باشند.

متدهایی که از یک کلاس انتزاعی در یک کلاس دیگر باید پیاده‌سازی میشود، می‌توانند سطح دید محدودتری داشته باشند.

مثلا Protected می‌تواند توی کلاس فرزند Private استفاده شود.

قابل پیاده‌سازی نیست (new BookInterface)قابل پیاده‌سازی نیست (new AbstractClass)
نمی‌‌تواند شامل متد سازنده (constructor) باشدمی‌‌تواند شامل متد سازنده (constructor) باشد