معنی اینترفیس یعنی مرتبط کننده. وقتی یک کلاس از یک اینترفیس استفاده میکند، ما مطمئن میشویم که اون کلاس یک سری ویژگیهای مورد نظر ما را دارد.
اینترفیس صرفاً یک قرارداد و پروتکل هست.
اگه چند کلاس مشابه داشته باشیم و بخواهیم کاری کنیم که از آن قرارداد تبعیت کنند، از اینترفیس استفاده میکنیم.
معنی اینترفیس یعنی مرتبط کننده. وقتی یک کلاس از یک اینترفیس استفاده میکند، ما مطمئن میشویم که اون کلاس یک سری ویژگیهای مورد نظر ما را دارد.
پیشنهاد ویژه: آموزش رایگان سالیدیتی
interface ها اغلب در بالای قرارداد هوشمند یافت می شوند. آنها با استفاده از کلمه کلیدی “interface” شناسایی می شوند.
interface ها شامل امضاهای تابع بدون اجرای تعریف تابع است (جزئیات پیاده سازی اهمیت کمتری دارند).
می توانید از یک اینترفیس در قرارداد خود برای فراخوانی توابع در قرارداد دیگر استفاده کنید.
مثال زیر نمونه قرارداد هوشمند با interface IERC20 را نشان می دهد.
امضاهای تابع این interface در قالب لیست هستند و با نقطه ویرگول خاتمه می یابند. interface نیازی به بدنه (جزئیات پیاده سازی) هر تابع ندارد.
افزودن این رابط، توابع IERC20 را برای استفاده در قرارداد نمونه در دسترس قرار می دهد.
اینترفیس ها در برنامه نویسی بلاکچین در سناریوهایی که برنامه شما نیاز به توسعه پذیری دارد اما نمی خواهید پیچیدگی بیشتری ایجاد کنید بسیار مفید هستند. آنها تکرار کد و سربار را کاهش می دهند.
اینترفیس | کلاس انتزاعی |
---|---|
فقط میتونه شامل Constant ها و متدهای انتزاعی باشد | میتواند شامل Constant ها، پراپتیها و متدهای انتزاعی باشد. همچنین میتواند شامل متدهای دارای بدنه (متدهای عادی که در آن میتوانیم کد بنویسیم) باشد. |
همه متدها باید Public باشند | متدها و پراپرتیها میتواند هر نوع سطح دیدی داشته باشند |
میتواند توسط یک اینترفیس یا یک کلاس انتزاعی دیگه توسعه داده شود interface myInterface extends xInterface { } | میتونه توسط یک کلاس انتزاعی دیگه توسعه داده بشه |
وقتی یک اینترفیس توسط یک اینترفیس دیگر توسعه داده شود، لازم نیست متدهای اینترفیس والد توی اینترفیس فرزند پیادهسازی شود | وقتی یک کلاس عادی، از یک کلاس انتزاعی Extend بشه، کلاس فرزند باید همه متدهای انتزاعی کلاس والد رو پیادهسازی کنه اما وقتی یک کلاس انتزاعی از یک کلاس انتزاعی دیگه Extend بشه، لازم نیست متدهای انتزاعی کلاس والد پیادهسازی بشه |
یک کلاس یا یک اینترفیس میتواند یک یا چند اینترفیس رو پیادهسازی کند | یک کلاس فقط میتواند یک کلاس دیگر رر Extend کند. و مهم نیست کلاس والد، کلاس عادی باشد یا انتزاعی |
متدهایی که از یک اینترفیس در یک کلاس عادی پیادهسازی میشوند، باید سطح دید Public داشته باشند. | متدهایی که از یک کلاس انتزاعی در یک کلاس دیگر باید پیادهسازی میشود، میتوانند سطح دید محدودتری داشته باشند. مثلا Protected میتواند توی کلاس فرزند Private استفاده شود. |
قابل پیادهسازی نیست ( | قابل پیادهسازی نیست ( |
نمیتواند شامل متد سازنده (constructor) باشد | میتواند شامل متد سازنده (constructor) باشد |