JavaRush /وبلاگ جاوا /Random-FA /رابط در جاوا
vinsler
مرحله

رابط در جاوا

در گروه منتشر شد
اگر هدفم را نداشته باشم که چیزی غیرقابل درک را با یک درخواست خاص برای کسی توضیح دهم، داستان نویس بدی هستم، بنابراین چیزهای ساده را درک می کنم، و یک چیز در مورد آن اینجا خواهم نوشت. من از مثال آموزش JavaRush پیروی نمی کنم که ابتدا یک سوال بپرسم و سپس به شما بگویم چگونه آن را انجام دهید. من طرفدار این هستم که اول بگویم و بعد بپرسم، مثل گفتن، اول نشان دادن، و بعد توضیح دادن.
رابط در جاوا - 1
BS: اقدامات == رفتار، آنها را به عنوان مترادف در نظر بگیرید، اعمال به سادگی به درستی درک می شوند، همیشه چیزی فعال است و رفتار ممکن است چیزی را نشان ندهد.

رابط - رابط

این چیه؟ مثال فهرست رابط (با ژنریک):
public interface Store<T, ID> {
    void add(T t);
    void update(T t, ID i);
    void delete(ID i);
    T findOne(ID i);
    List<T> findAll();
}
رابط معمولی crud (از CRUD: ایجاد، خواندن، به‌روزرسانی، حذف). نگران نباشید، همه چیز بسیار ساده است. این رابط به این معنی است که کار با بسیاری از پایگاه های داده بر اساس اصل زیر است: شما باید یک رکورد اضافه کنید، یک رکورد را به روز کنید، حذف کنید و همه رکوردها را پیدا کنید. شما 100 بار دیگر با این مورد روبرو خواهید شد و تقریباً همان رابط کاربری را خودتان به همان تعداد بار خواهید نوشت. عمومی تعیین شده است زیرا باید توسط کلاس اجرا شود. پیاده سازی توسط یک کلاس به چه معناست ؟ همه چیز بسیار ساده است: باید تمام روش های رابط را شرح دهد. ساده ترین مثال پیاده سازی در یک کلاس:
void add (T t) {
	bookstore.add(t);
}
به جای T t، یک ژنریک خاص جایگزین خواهد شد. به طور خلاصه، این TYPE یک متغیر است، به همین دلیل است که اغلب با T = Type نشان داده می شود. در مثال ما، بیایید بگوییم که می تواند مانند این باشد:
void add (Book book) {
	bookstore.add(book);
}
طبیعتاً به جای Book book می توانید هر متغیری را که برای پیاده سازی نیاز دارید جایگزین کنید. برای درک، می توانید از نظر تئوری تصور کنید که T = Object، و از آنجایی که در جاوا همه چیز Object است، می توانید هر یک از کلاس ها / متغیرهای خود را نیز در آنجا تعریف کنید. تنها مشکل بعداً ایجاد می شود - استثنا اگر کلاس صفر باشد و غیره. به قول خودش، این یک ساختار برنامه ای مشخص است که روابط بین اشیاء را با تقسیم آنها به بخش های رفتاری خاص تعریف می کند. هدف یک رابط تعریف عملکرد برای پیاده سازی توسط یک کلاس است. یعنی شرح امضاهای روش. در داخل رابط نام متدهایی وجود دارد که مقادیر را برمی‌گردانند و وارد می‌کنند و بس. خوب، شما هنوز هم می توانید برخی از متغیرها را در آنجا تعیین کنید، اما آنها بلافاصله به طور ضمنی عمومی استاتیک نهایی می شوند، و می توان از هر بخشی از برنامه به آنها دسترسی داشت. رابط، اقدامات را توصیف می کند، و بنابراین همین اقدامات در آن وجود دارد، یعنی. توابع یا روش ها چرا این لازم است؟ این چه چیزی را ساده می کند یا چه مزایایی را ارائه می دهد؟ ساده کردن توصیف اعمال و رفتار. ما می گوییم چه باید کرد، اما هر کلاس خودش نحوه انجام آن را پیاده سازی می کند. در زمان پروژه های بزرگ صرفه جویی کنید. رابط‌ها در موقعیت‌هایی ایجاد می‌شوند که می‌دانیم باید برخی کارها را انجام دهیم، اما نحوه انجام آن ممکن است متفاوت باشد. رابط نام اقدامات را توصیف می کند - این به سادگی جهت برخی انتزاع است. اگرچه ممکن است رابط‌هایی بدون متد و فیلد نیز وجود داشته باشد، مانند نشانگرهایی مانند Cloneable، Remote و غیره. بیایید نمونه مورد علاقه همه از یک ماشین را در نظر بگیریم. رابط موجود در آن اقدامات احتمالی ماشین، چرخاندن فرمان یا جهت حرکت، افزایش سرعت، باقیمانده بنزین و غیره را توصیف می کند. یعنی همان اعمالی که مطلقاً هر ماشینی می تواند داشته باشد. به عبارت دیگر، ما به جنگل انحطاط فرود می‌آییم تا به پایین‌ترین سطح خلقت اولین ماشین برسیم و با مغز خودمان می‌فهمیم که چگونه خلق شده و چه داشته است. طبیعتاً ما این را به صورت انتزاعی و فقط برای اعمال توصیف می کنیم. اولین ماشین چی داشت؟ فرمان هم داشت؟ بود، یعنی داشت به جایی می‌چرخید، جهت فرمان/حرکت. چرخ ها وجود داشت؟ بله، این بدان معناست که من با سرعت کمی رانندگی می کردم، تغییر سرعت. این تمام رابط است. اما به طور کلی، رابط ها برای اجرای برخی از اقدامات خاص ایجاد می شوند. آن ها ما برای برنامه های خاص تر از هر چیز دیگری که فکرش را بکنید برنامه می نویسیم. بنابراین، خود اینترفیس ها شامل روش های واضح تر و مشخص تری خواهند بود. البته آنها تا حد امکان انتزاعی خواهند بود. رابط ها را می توان به عنوان کلاس از یکدیگر به ارث برد.
interface MyInterface extends NotMyinterface;
اینترفیس ها در کلاس ها پیاده سازی می شوند. شما می توانید هر تعداد رابط را که دوست دارید پیاده سازی کنید. بر خلاف ارث، فقط از یکی ارث ببرید.
class NewClass extends OldClass implements MyInterface, NotMyinterface;
آن ها ما به برخی از اقدامات رسیدیم، آنها را نامگذاری کردیم، داده های ورودی، داده ها را برگردانیم، همه اینها را در رابط نوشتیم، سپس یک کلاس ایجاد کردیم و رابط خود را به این کلاس اضافه کردیم، یعنی. رابط ما را در این کلاس پیاده سازی کرد. علاوه بر این، تمام روش‌ها/توابع توضیح داده شده در رابط باید یک پیاده‌سازی داشته باشند. می توان آن را مستقیماً در خود اینترفیس با افزودن کلمه default قبل از متد و نوشتن پیاده سازی مستقیم در متد مانند یک کلاس انجام داد. این با نسخه 8 جاوا امکان پذیر شد. همچنین می توان این کار را در کلاسی انجام داد که این رابط را پیاده سازی کند. خوب، ما اینترفیس را نوشته ایم، آن را در کلاس پیاده سازی کرده ایم، پیاده سازی را در کلاس ارائه کرده ایم، می توانیم آن را اجرا کرده و آزمایش کنیم. همچنین می توانید در رابط ها در مورد:
  • روش های استاتیک
  • روش های خصوصی (تکرار کد)
  • متغیرها/ثابت ها
  • رابط های تو در تو
اما بهتر است این کار را بعدا انجام دهید و همچنین پر کردن بیش از حد سرتان مضر است. سوال جالب ولوو چیست؟ کلاس یا رابط؟
line1: Volvo v = new VolvoV2();
line2: Volvo v = new VolvoV3();
علاوه بر رابط ها، ارزش ادامه دادن در مورد کلاس ها و کلاس های انتزاعی را دارد. شاید بعداً که چند ساعت دیگر آزاد باشم. ))) PS: بچه ها من همه انتقادات را زیر پست یا در پی ام درخواست می کنم ، کاملاً درک می کنم که همه آن را دارند))) و همیشه علاقه مند به شنیدن آن هستم ، زیرا این دلیلی است برای کمی بهتر شدن و بهتر شدن دوباره به حرکت رو به جلو ادامه دهید با تشکر از همه شما و آرزوی موفقیت در برنامه نویسی. )))
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION