Abstrakt Sinif və İnterfeys
Abstrakt sinif və İnterfeys Java kimi bir çox obyekt yönümlü proqramlaşdırma dillərində tapılan iki obyekt yönümlü konstruksiyalardır. Mücərrəd sinif adi (konkret) sinfin mücərrəd versiyası kimi, interfeys isə müqavilənin həyata keçirilməsi vasitəsi kimi qəbul edilə bilər. Abstrakt sinif başlatıla bilməyən, lakin genişləndirilə bilən sinifdir. İnterfeys başqa siniflər tərəfindən həyata keçirilməli olan bir növdür. Java-da Abstract sinifləri Abstract açar sözü ilə elan edilir, interfeys açar sözü isə interfeysi müəyyən etmək üçün istifadə olunur.
Abstrakt Sinif nədir?
Adətən, Abstract Base Classes (ABC) kimi tanınan Abstrakt siniflər yaradıla bilməz (həmin sinfin nümunəsi yaradıla bilməz). Beləliklə, mücərrəd siniflər yalnız proqramlaşdırma dili miras almağı dəstəklədiyi təqdirdə məna kəsb edir (sinfi genişləndirməkdən alt siniflər yaratmaq imkanı). Mücərrəd siniflər adətən mücərrəd konsepsiya və ya obyekti qismən və ya heç bir şəkildə həyata keçirmir. Buna görə də, Abstrakt siniflər uşaq siniflərinin əldə edildiyi ana siniflər kimi çıxış edir ki, uşaq sinif ana sinifin natamam xüsusiyyətlərini paylaşsın və onları tamamlamaq üçün funksionallıq əlavə olunsun.
Abstrakt siniflərdə Abstrakt metodlar ola bilər. Mücərrəd sinfi genişləndirən alt siniflər bu (irsi) Abstrakt metodları həyata keçirə bilər. Uşaq sinfi bütün bu Abstrakt metodları həyata keçirirsə, bu konkret sinifdir. Amma belə deyilsə, uşaq sinfi də Abstrakt sinifə çevrilir. Bütün bunlar o deməkdir ki, proqramçı bir sinfi Abstrakt olaraq təyin etdikdə, o, sinfin natamam olacağını və miras qalan alt siniflər tərəfindən tamamlanmalı olan elementlərə sahib olacağını söyləyir. Bu, iki proqramçı arasında proqram təminatının hazırlanmasında tapşırıqları asanlaşdıran müqavilə yaratmaq üçün gözəl bir yoldur. Vərəsəlik üçün kod yazan proqramçı metod təriflərinə tam əməl etməlidir (lakin əlbəttə ki, özünün tətbiqi ola bilər).
İnterfeys nədir?
İnterfeys həmin interfeysi həyata keçirən siniflər tərəfindən həyata keçirilməli olan müqaviləni müəyyən etmək üçün istifadə edilən mücərrəd tipdir. İnterfeys açar sözü interfeysi müəyyən etmək üçün, Implements açar sözü isə interfeysi sinif tərəfindən həyata keçirmək üçün istifadə olunur (Java proqramlaşdırma dilində). Adətən, interfeys yalnız metod imzalarını və daimi bəyannamələri ehtiva edir. Müəyyən bir interfeysi həyata keçirən istənilən interfeys interfeysdə müəyyən edilmiş bütün metodları həyata keçirməli və ya mücərrəd sinif kimi elan edilməlidir. Java-da obyekt istinadının növü interfeys növü kimi müəyyən edilə bilər. Lakin həmin obyekt ya null olmalıdır, ya da həmin xüsusi interfeysi həyata keçirən sinif obyektini saxlamalıdır. Java-da Implements açar sözündən istifadə edərək, bir sinifə birdən çox interfeys tətbiq edə bilərsiniz.
Abstrakt Sinf və İnterfeys arasında fərq nədir?
Mücərrəd siniflər adətən mücərrəd konsepsiyanı və ya qismən və ya həyata keçirilməyən obyekti təmsil edir. Digər tərəfdən, interfeys siniflər tərəfindən həyata keçirilməli olan müqaviləni müəyyən etmək üçün istifadə olunan mücərrəd bir növdür. Abstrakt siniflər miras alınmalı (və ya uzadılmalıdır), interfeyslər isə həyata keçirilməlidir. Abstrakt siniflər mücərrəd metodlardan ibarət ola bilər, halbuki interfeys yalnız abstrakt metodlardan ibarət olmalıdır. Abstrakt siniflər istənilən dəyişəni ehtiva edə bilər, lakin İnterfeyslər yalnız sabitləri təyin edə bilər. Bir sinif birdən çox abstrakt sinifdən miras ala bilməz, lakin birdən çox interfeys həyata keçirə bilər. İnterfeys başqa interfeysi həyata keçirə bilməz. Bununla belə, interfeys sinfi genişləndirə bilər.