Sobes.tech
Middle+

Növlərin kovariantlığı nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Türlərin kovariantlığı, tip sisteminin bir xüsusiyyətidir və burada daha spesifik (alt) tipdən istifadə etmək mümkündür, harada ki, daha ümumi (üst) tip gözlənilir.

Java kontekstində, bu çox vaxt irsiyyət və generiklərlə işləyərkən özünü göstərir. Məsələn, əgər Mushuk sinfi Heyvan-dan irsən, kovariantlıq Mushuk-u Heyvan-ın gözlənildiyi yerdə istifadə etməyə imkan verir.

Ancaq, Java-da generiklər standart olaraq invariantdir, yəni List<Mushuk> List<Heyvan>-ın alt tipi deyil. Kovariantlığı dəstəkləmək üçün ? extends ilə wildcard tiplərindən istifadə olunur:

List<? extends Heyvan> heyvanlar = new ArrayList<Mushuk>();

Burada, ? extends Heyvan ifadəsi, siyahının Heyvan və ya onun alt tiplərindən obyektlər ehtiva etdiyini göstərir, bu da siyahıdakı obyektləri təhlükəsiz oxumağa imkan verir, lakin yeni elementlərin əlavə edilməsini (null istisna olmaqla) qadağan edir.

Bu şəkildə, kovariantlıq alt tipləri daha ümumi tiplərin gözlənildiyi yerlərdə istifadə etməyə kömək edir, tip təhlükəsizliyini və kodun elastikliyini qoruyur.