Kodlaşdırma müsahibəsində "bir interfeys və mücərrəd sinif arasındakı əsas fərq nədir" sualına, düzgün cavab nədir?


cavab 1:

İnsan diri, mən yarısını öldürdüm.

Mən həqiqətən "cavabı" bilmirəm, amma fikrimin nə olduğunu bilirəm.

Mən interfeysdən kodun gözlədiyi şəkildə zəng etmək üçün bir söz olaraq istifadə edirəm. Bu abstraksiya - onu necə həyata keçirməyinizdən asılı olmayaraq həqiqət nədir. Mənim üçün bu (ümumiyyətlə) tətbiq sahəsini - obyektini təmsil edir.

Son nümunəm belədir

interfeys UserProfiles {İsteğe bağlı yükləmə (UUID hesabı nömrəsi); }

Çağırış kodu bir hesab şəxsiyyət vəsiqəsi təmin edir və bir profil mövcuddursa geri qaytarılacaqdır.

Hazırda bir sistem çevirdiyimiz zaman bəzi tətbiqlər həyata keçirilir. Bir mücərrəd sinif burada kömək edə bilər.

Mənim üçün bir mücərrəd sinif özelleştirilebilir bir mexanizmdir. Mövzunun bir hissəsi deyil. Müştəri söz olaraq göstərilən xidmətlərə etibar etməməlidir.

Bu həyata keçirilmənin bir hissəsidir. Xüsusilə, bir interfeysin iki və ya daha çox tətbiqi arasında paylaşılan ümumi tətbiqetmə kodudur.

Bir mücərrəd sinifimiz ola bilərdi

mücərrəd sinif DatabaseUserProfiles UserProfiles {seçmə yükləməsini həyata keçirir (UUID hesab nömrəsi) {String verilənlər bazasıSpecificSql = getQueryFindByAccountNumber (accountNumber); return executeQuery (verilənlər bazasıSpecificSql); } mücərrəd String getQueryFindByAccountNumber (UUID hesabı nömrəsi); }

Bu uydurma misalda, profilləri saxlamaq üçün dəstəklədiyimiz SQL verilənlər bazası məhsullarından bəzilərimiz olacaq və verilənlər bazasına məxsus SQL-i qaytarmaq üçün GoF şablon metodundan, getQueryFindByAccountNumber () istifadə edərdik.

Ümumi bir SQL verilənlər bazasından istifadənin paylaşılan hissələri bu mücərrəd sinifdə başqa yerdədir.

Beləliklə, bəli, həqiqətən bir interfeysim olacaq - mövzu / müştəri vədləri - və (bəzən) ABC-nin ortaq bir həyata keçirilməsi.

Oxunması üçün iki fərqli məqsəd.

Bəli, Java 8/9/10-dan bəri C ++-də bu xətt əvvəlkindən də qeyri-səlis olmuşdur. Hər iki məqsədi yerinə yetirmək üçün bir ABC istifadə edə bilsəniz, bunu etmək istəmirəm, çünki kodumu demək istədiyimi oxuculara çatdırmır.

Bu nöqtədə, hamımız bir az cansıxıcı görünür və şübhə edirəm ki, bir az ağ lövhə düzəlt.


cavab 2:

Düşünürəm ki, interfeys çox miras dəstəkləyir və mücərrəd sinif deyil. İkinci fərq, interfeysdəki bütün üsulların mücərrəd olmasıdır.

İnterfeys əslində abstrakt sinifin özündən daha çox mücərrəddir.Zəruri hallarda hətta bir neçə digər interfeysi genişləndirən bir interfeys yarada bilərsiniz.

İnterfeys son mücərrəd sinifdir. Mücərrəd sinif interfeys və beton sinif arasındakı hibriddir.

Bir mücərrəd sinif konkret metodları ehtiva edə bilər və buna görə də çoxlu miras konkret metodların qeyri-müəyyən dərəcədə aşırılmasına səbəb ola bilər ki, bu da mücərrəd metodların ləğvi ilə əlaqəli deyil, çünki bu məna verirsə mücərrəd metodlar boşdur və Java yalnız interfeyslər üçün çoxsaylı varis olmağa imkan verir.

Java kolleksiyalarının iyerarxiyasına baxsanız, interfeyslər arasındakı diaqramın bitişik bir ağac kimi asiklik olduğunu və heç bir interfeys istifadə edilmədiyi təqdirdə ikili olmadığını görəcəksiniz.


cavab 3:

Düşünürəm ki, interfeys çox miras dəstəkləyir və mücərrəd sinif deyil. İkinci fərq, interfeysdəki bütün üsulların mücərrəd olmasıdır.

İnterfeys əslində abstrakt sinifin özündən daha çox mücərrəddir.Zəruri hallarda hətta bir neçə digər interfeysi genişləndirən bir interfeys yarada bilərsiniz.

İnterfeys son mücərrəd sinifdir. Mücərrəd sinif interfeys və beton sinif arasındakı hibriddir.

Bir mücərrəd sinif konkret metodları ehtiva edə bilər və buna görə də çoxlu miras konkret metodların qeyri-müəyyən dərəcədə aşırılmasına səbəb ola bilər ki, bu da mücərrəd metodların ləğvi ilə əlaqəli deyil, çünki bu məna verirsə mücərrəd metodlar boşdur və Java yalnız interfeyslər üçün çoxsaylı varis olmağa imkan verir.

Java kolleksiyalarının iyerarxiyasına baxsanız, interfeyslər arasındakı diaqramın bitişik bir ağac kimi asiklik olduğunu və heç bir interfeys istifadə edilmədiyi təqdirdə ikili olmadığını görəcəksiniz.


cavab 4:

Düşünürəm ki, interfeys çox miras dəstəkləyir və mücərrəd sinif deyil. İkinci fərq, interfeysdəki bütün üsulların mücərrəd olmasıdır.

İnterfeys əslində abstrakt sinifin özündən daha çox mücərrəddir.Zəruri hallarda hətta bir neçə digər interfeysi genişləndirən bir interfeys yarada bilərsiniz.

İnterfeys son mücərrəd sinifdir. Mücərrəd sinif interfeys və beton sinif arasındakı hibriddir.

Bir mücərrəd sinif konkret metodları ehtiva edə bilər və buna görə də çoxlu miras konkret metodların qeyri-müəyyən dərəcədə aşırılmasına səbəb ola bilər ki, bu da mücərrəd metodların ləğvi ilə əlaqəli deyil, çünki bu məna verirsə mücərrəd metodlar boşdur və Java yalnız interfeyslər üçün çoxsaylı varis olmağa imkan verir.

Java kolleksiyalarının iyerarxiyasına baxsanız, interfeyslər arasındakı diaqramın bitişik bir ağac kimi asiklik olduğunu və heç bir interfeys istifadə edilmədiyi təqdirdə ikili olmadığını görəcəksiniz.