PDA

View Full Version : interface کارش دقیقا چیه؟



shadmehr2008
جمعه 14 خرداد 1395, 23:02 عصر
با سلام حضور اساتید عزیزمن یه اینترفیس ایجاد کردم با متدهای انتزاعی و بعد یه کلاس رو implement کردم و متدها رو override کردم ولی این وسط نفهمیدم کار این اینترفیس چی بود راهنمایی عملی کنید ممنون می شم

amin1softco
شنبه 15 خرداد 1395, 07:27 صبح
http://karjoo.persianblog.ir/post/3/

[younes]
شنبه 15 خرداد 1395, 16:44 عصر
اینترفیس در جاوا یه چیزی مثل کلاسه یعنی قابلیت ارث بری و .... داره اما متد هاش واقعا کاری انجام نمیدهند و برای پیاده سازی رفتار کلاس های دیگه استفاده میشه.

smokyshadow
دوشنبه 17 خرداد 1395, 08:36 صبح
سلام
واسط مثه کلاسه abstract ایه که همه ی متداش abstract باشن ....در حقیقت تو واسط شما عملکرد ها رو مشخص کردین ولی نحوه پیاده سازیش رو نه ...این طوری کلاسی که اونو implementمی کنه بدنه ی متد رو به دلخواه خودش می نویسه...مثلا شما یه اینترفیس حیوان داری که متد حرکت داره و مار و گاو اونو پیاده سازی می کنن بدیهیه که متده حرکت کردن برای این دو متفاوته و بدنهی متد ها فرق داره ...حالا شما میتونین یه کلاس تعریف کنین و بدنه ها رو هم توش بنویسین و تو کلاس دیگه ای که ازش ارث بری می کنه اونوو override کنین و تغییرش بدین ولی interface یا abstract classشما رو موظف می کنه که متد های abstract رو پیاده سازی کنین و نکته دیگه این که کلاسیتون که یه واسط رو پیاده سازی میکنه همزمان می تونه یه کلاس رو هم اکستند کنه ولی یه کلاس نمی تونه همزمان دو تا کلاس (حتی یکی abstract )رو اکستند کنه

vahid-p
چهارشنبه 19 خرداد 1395, 05:45 صبح
با یه مثال کاربردش فکر کنم واضح بشه:

بسیاری از Event Listener ها یک آبجکت میگیرن. این آبجکت معمولا از یک اینترفیس ساخته میشه. دلیل اینکار چیه؟
علتش اینه وقتی یک Event (رخداد مثل کلیک کردن) رخ میده، اون کامپوننتی که رخداد براش اتفاق افتاده، می خواد یک متد رو صدا بزنه. این متد که در یک اینترفیس تعریف شده، برنامه نویس رو مجبور میکنه حتما اون متد با اون مشخصات ورودی و خروجی و اسمش رو پیاده سازی کنه. اگر اینترفیس نبود و اختیار رو به برنامه نویس میداد، اون کامپوننت از کجا بدونه باید بعد از اینکه روش کلیک شد چه متدی و با چه اسم و مشخصاتی رو صدا بزنه تا کاری انجام بشه؟

در اصل اینترفیس میگه میخوای با فلان ابزار کار کنی، باید بدنه این متدهایی که من اسمشون رو برات تعیین کردم و ورودی و خروجی هاش رو مشخص کردم رو پیاده سازی کنی. من فقط این اسامی و ورودی و خروجی ها رو میشناسم و کاری به چیز دیگه ای ندارم که داخلش چه اتفاقی می فتد.