JavaRush /Java Blogu /Random-AZ /Java-da interfeys
vinsler
Səviyyə

Java-da interfeys

Qrupda dərc edilmişdir
Müəyyən bir xahişlə kiməsə anlaşılmaz bir şey izah etmək məqsədim yoxdursa, mən pis hekayəçiyəm, ona görə də sadə şeyləri başa düşürəm və bir şey üçün bu barədə burada yazacağam. Mən JavaRush tədris nümunəsinə əməl etmirəm ki, əvvəlcə sual verib, sonra bunu necə edəcəyinizi söyləyin. Mən danışanda olduğu kimi əvvəlcə deməyin, sonra soruşmağın, əvvəl göstərməyin, sonra izah etməyin tərəfdarıyam.
Java-da interfeys - 1
BS: Hərəkətlər == davranış, onları sinonim kimi qəbul edin, hərəkətlər sadəcə olaraq daha düzgün başa düşülür, həmişə aktiv bir şeydir və davranış heç bir şey göstərməyə bilər.

interfeys - interfeys

Bu nədir? Nümunə interfeys siyahısı (generiklərlə):
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();
}
Ümumi xırda (CRUD-dan: Yarat, Oxu, Yenilə, Sil) interfeysi. Narahat olmayın, hər şey olduqca sadədir. Bu interfeys o deməkdir ki, bir çox verilənlər bazası ilə işləmək aşağıdakı prinsipə əsaslanır: qeyd əlavə etmək, qeydi yeniləmək, bütün qeydləri silmək və tapmaq lazımdır. Bununla daha 100 dəfə rastlaşacaqsınız və demək olar ki, eyni interfeysi özünüz də eyni sayda yazacaqsınız. O, ictimai təyin olunur, çünki o, sinif tərəfindən həyata keçirilməlidir. Bir sinif tərəfindən həyata keçirilmək nə deməkdir ? Hər şey çox sadədir: o, interfeysin bütün üsullarını təsvir etməlidir. Bir sinifdə tətbiqin ən sadə nümunəsi:
void add (T t) {
	bookstore.add(t);
}
T t əvəzinə müəyyən bir generik əvəz olunacaq. Qısaca desək, bu, dəyişənin TİPİ-dir, buna görə də o, ən çox T = Tip kimi işarələnir. Nümunəmizdə deyək ki, bu belə ola bilər:
void add (Book book) {
	bookstore.add(book);
}
Təbii ki, Kitab kitabının yerinə siz həyata keçirməniz üçün lazım olan hər hansı dəyişəni əvəz edə bilərsiniz. Bunu başa düşmək üçün nəzəri olaraq təsəvvür edə bilərsiniz ki, T = Obyekt və Java-da hər şey Obyektdir, siz də orada hər hansı siniflərinizi/dəyişənlərinizi təyin edə bilərsiniz. Yeganə problem daha sonra yaranacaq - sinif sıfır olduqda istisnalar və s. Öz sözləri ilə desək, obyektləri müəyyən davranış hissələrinə bölmək yolu ilə münasibətləri müəyyən edən müəyyən proqram strukturudur. Bir interfeysin məqsədi sinif tərəfindən həyata keçirilməsi üçün funksionallığı müəyyən etməkdir. Yəni metod imzalarının təsviri. İnterfeys daxilində dəyərləri qaytaran və daxil edən metodların adları var, vəssalam. Yaxşı, siz hələ də orada bəzi dəyişənləri təyin edə bilərsiniz, lakin onlar dərhal açıq şəkildə ictimai statik finala çevrilir və proqramın istənilən hissəsindən istifadə edilə bilər. İnterfeys hərəkətləri təsvir edir və buna görə də eyni hərəkətlər onun içərisindədir, yəni. funksiyalar və ya üsullar. Bu niyə lazımdır? Bu nəyi sadələşdirir və ya hansı üstünlükləri təmin edir? Hərəkətlərin və davranışların təsvirinin sadələşdirilməsi. Biz nə edəcəyimizi deyirik, lakin hər sinif bunu necə edəcəyini özü həyata keçirir. Böyük layihələrdə vaxtınıza qənaət edin. İnterfeyslər bəzi tapşırığı yerinə yetirməli olduğumuzu bildiyimiz vəziyyətlərdə yaradılır, lakin bunu necə etmək fərqli ola bilər. İnterfeys hərəkətlərin adlarını təsvir edir - bu, sadəcə olaraq bəzi abstraksiyaların istiqamətidir. Baxmayaraq ki, Cloneable, Remote və s. kimi markerlər kimi metod və sahələri olmayan interfeyslər də ola bilər. Hər kəsin sevimli avtomobil nümunəsini götürək. İçindəki interfeys avtomobilin mümkün hərəkətlərini, sükan çarxını və ya hərəkət istiqamətini döndərməyi, sürət artımını, qalan benzini və s. Yəni, tamamilə hər hansı bir avtomobilin ola biləcəyi eyni hərəkətlər. Başqa sözlə, biz ilk avtomobilin yaradılmasının ən aşağı səviyyəsinə qədər deqradasiya cəngəlliyinə enirik və öz beynimizlə onun necə yaradıldığını və nəyə sahib olduğunu anlayırıq. Təbii ki, biz bunu mücərrəd şəkildə və yalnız hərəkətlər üçün təsvir edirik. İlk avtomobil nəyə sahib idi? Sükan var idi? Bu, sükan çarxının/hərəkətin istiqaməti kimi bir yerə fırlandığını bildirir. Təkərlər var idi? Bəli, bu o deməkdir ki, mən hansısa sürətlə idarə edirdim, sürət dəyişikliyi. Bütün interfeys budur. Ancaq ümumiyyətlə, interfeyslər müəyyən hərəkətlərin bəzi həyata keçirilməsi üçün yaradılır. Bunlar. ağlınıza gələn hər şeydən daha konkret proqramlar üçün proqram yazırıq. Buna görə də, interfeyslərin özləri daha aydın və daha spesifik üsulları ehtiva edəcəkdir. Təbii ki, onlar mümkün qədər mücərrəd olacaqlar. İnterfeyslər bir-birindən siniflər kimi miras alına bilər.
interface MyInterface extends NotMyinterface;
İnterfeyslər siniflərdə həyata keçirilir. İstədiyiniz qədər çox interfeys tətbiq edə bilərsiniz. Vərəsəlikdən fərqli olaraq, yalnız birindən miras alın.
class NewClass extends OldClass implements MyInterface, NotMyinterface;
Bunlar. biz bəzi hərəkətlərlə gəldik, onlara adlar verdik, məlumatları daxil etdik, məlumatları qaytardıq, bütün bunları interfeysə yazdıq, sonra bir sinif yaratdıq və interfeysimizi bu sinfə əlavə etdik, yəni. interfeysimizi bu sinifdə həyata keçirdik. Bundan əlavə, interfeysdə təsvir edilən bütün metodların/funksiyaların icrası olmalıdır. Bu, metoddan əvvəl default sözünü əlavə etməklə və tətbiqi sinif kimi birbaşa metodda yazmaqla birbaşa interfeysin özündə edilə bilər. Bu, Java-nın 8-ci versiyası ilə mümkün oldu. Bu interfeysi həyata keçirəcək bir sinifdə də edilə bilər. Yaxşı, biz interfeysi yazdıq, sinifdə tətbiq etdik, tətbiqi sinifdə yaydıq, biz onu işə salıb sınaqdan keçirə bilərik. Siz həmçinin interfeyslərdə oxuya bilərsiniz:
  • Statik üsullar.
  • Şəxsi üsullar. (kod təkrarı)
  • Dəyişənlər/Sabitlər.
  • Daxili interfeyslər.
Ancaq bunu daha sonra etmək daha yaxşıdır və başınızı çox şeylə doldurmaq da zərərlidir. Maraqlı sual, Volvo nədir? Sinif və ya interfeys?
line1: Volvo v = new VolvoV2();
line2: Volvo v = new VolvoV3();
İnterfeyslərə əlavə olaraq Abstrakt Dərslər və Siniflər haqqında da davam etməyə dəyər. Bəlkə daha sonra, bir neçə saat daha boş qalanda. ))) P.S: Uşaqlar, mən yazının altında və ya PM-də bütün tənqidləri xahiş edirəm, mükəmməl başa düşürəm ki, hər kəsdə var))) və mən həmişə eşitməkdə maraqlıyam, çünki bu bir az daha yaxşı olmaq üçün bir səbəbdir və yenə irəliləməyə davam edin. Bununla, hamınıza çox sağ olun və proqramlaşdırmada uğurlar. )))
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION