PDA

View Full Version : مشکل در نحوه استفاده از interface و abstract



se8820726
یک شنبه 18 اسفند 1392, 08:34 صبح
سلام
دوستان لطفا این فایلو دانلود کنید: http://www.kilobolt.com/uploads/1/2/5/7/12571940/kiloboltrobotgamecomplete.zip
این یه پروژه اندرویدیه ولی چون مشکل من تو interface و abstract بود و به قواعد java مربوط میشد اینجا پرسیدم

حالا اگه پروژه رو تو eclipse import کنیم و تو کلاس AndroidGame که تو پکیج com.kilobolt.framework.implementation قرار داره نیگاه کنیم. میبینیم که interface Game رو implement کرده.
خوب ما خونده بودیم که اگه کلاسی یه اینترفیس رو implement کنه باید تمام متدهای توی اونو توش تعریف کنیم. ولی من میبینم که یکی از متدهای Game بنام getInitScreen توش تعریف نشده و eclipse هم اصلا پیغام خطا نداده !! چرا ؟؟

حالا تو همین کلاس AndroidGame تو متد onCreate اون آخراش میبینیم که اینو نوشته:

screen = getInitScreen();

خوب آیا این ممکنه ؟؟ مشکلی نداره ؟؟ آخه هنوز متد getInitScreen تعریف نشده!!

بعد تو متد onResume هم میبینیم که نوشته:

screen.resume();
حالا این screen یه نمونه از class abstarct Screen هستش و متد resume هم فقط امضاش تو Screen هست و هیچ کدی براش تعریف نشده ولی میخواد متد resume رو اجرا کنه و eclipse هم خطایی نگرفته !!

میشه رفتار دقیق اینارو به من توضیح بدین
ممنون

cups_of_java
یک شنبه 18 اسفند 1392, 11:26 صبح
اون کلاسی که بعضی متد های اینترفیس پدرش رو پیاده سازی کرده و بعضی هاش رو نکرده و خطا هم نداره حتمن یه کلاس Abstract هستش.
اصن تعریف و کاربرد کلاس های abstract همینه که شما بتونی اون قسمت هایی که پیاده سازیش رو می دونی انجام بدی (بر خلاف اینترفیس که اصن نمیزاره شما متد بدنه دار (پیاده سازی شده) داشته باشی) و اون قسمت هایی هم که نمی دونی و بچه هاش باید پیاده سازیش رو مشخص کنن (در واقع متد های abstract) رو خالی بزاری تا بعد.
طبیعتن همون طور که از اینترفیس نمیشه new کرد از abstract کلاس ها هم نمیشه.