Bir interfeys, bir mücərrəd sinif və konkret sinif arasındakı fərq nədir?


cavab 1:

Yalnız əlaqəli dərsləri yazarkən istifadə ediləcək bir planı müəyyənləşdirmək istəsəniz və yalnız planda müəyyən edilmiş və əsas siniflərdə olmayan metodlar / sahələr ilə maraqlanırsınızsa, bir sözlə yaxşısınız. Bir nümunə olaraq bir siyahıdan istifadə edək. Əlavə etmək, çıxarmaq, almaq və bənzər metodlar ilə maraqlanır və faktiki siyahı sinifini (məsələn, LinkedList və ya ArrayList) həyata keçirən şəxsə bunu necə edəcəyindən narahat olmağa imkan verirlər. Artıq növ siyahısı obyektinə istinadınız var və bu "planda" müəyyən edilmiş metodlardan istifadə edin. Bununla birlikdə, bu obyektin həqiqi sinfi List interfeysini həyata keçirən siniflərdən biridir, çünki bir siyahı nümunəsi yarada bilməzsiniz (bu yalnız bir plan olduğundan, metod tərifləri yoxdur).

Yenidən əlaqəli siniflər üçün bir növ "planı" təmin etmək, eyni zamanda bəzi üsulları özünüz müəyyənləşdirmək istəyirsinizsə (simli və ya hər hansı bir şey deyin), bunu mücərrəd siniflə edə bilərsiniz. Mücərrəd sinfi (interfeys kimi) tərtib edilə bilməz, çünki bəzi mükəmməl metodlar mövcuddur ki, bəzi tətbiq olunan metodlarla yanaşı, "planlar" da mövcuddur.

Nəhayət, konkret sinif abstrakt metodları olmayan bir sinifdir (buna görə də bütün metodlar tətbiq olunur) və kodunuzda istifadə edilə bilər. Əlbəttə ki, bu bir interfeysin tətbiqi və ya mücərrəd bir sinifin uzadılması ola bilər.

Yeri gəlmişkən, Java-da birdən çox interfeys tətbiq edə bilərsiniz, ancaq birdən çox baza siniflərini (mücərrəd və ya olmayan) uzatmaq olmur. Niyə? Çünki dil dizaynerləri bunun həyata keçirilməməsinə qərar verdilər. Eyni metodu (məsələn, çəkin ()) tətbiq edən iki baza sinifiniz olsaydı və hər ikinizi də uzatmaq istəsəniz, YourMethod.draw () deyəndə hansı () metodu çağırılacaq? Çox interfeys tətbiq edərkən bu problem deyil, çünki çoxsaylı interfeys heç-heçə () metodunu elan edə bilər. Ancaq həyata keçirmə yalnız birdir - sizin yazdığınız.


cavab 2:

İnterfeys - sadəcə bir sinif bəyannaməsidir. İnterfeysdə heç bir tərif yoxdur.

Abstrakt sinif - bu da bəyannamə ilə tərifi ehtiva edir, lakin mükəmməl modelimiz deyildir. Mücərrəd və qeyri-abstrakt metodlara sahib ola bilər.

Beton sinfi - bu da tərif və bəyannaməni ehtiva edir, lakin burada bütün üsullar onların tətbiqinə malikdir.


cavab 3:

İnterfeys - sadəcə bir sinif bəyannaməsidir. İnterfeysdə heç bir tərif yoxdur.

Abstrakt sinif - bu da bəyannamə ilə tərifi ehtiva edir, lakin mükəmməl modelimiz deyildir. Mücərrəd və qeyri-abstrakt metodlara sahib ola bilər.

Beton sinfi - bu da tərif və bəyannaməni ehtiva edir, lakin burada bütün üsullar onların tətbiqinə malikdir.