Xeyr, Konstruktorlar ictimai, şəxsi, qorunan və ya defolt ola bilər (heç bir giriş dəyişdiricisi yoxdur). Bir şeyi şəxsi etmək heç kimin ona daxil ola bilməyəcəyi anlamına gəlmir. Bu o deməkdir ki, sinifdən kənar heç kim ona daxil ola bilməz. Beləliklə, şəxsi konstruktor da faydalıdır.
Yavada konstruktorlar şəxsi ola bilərmi?
Obyekt yaradılmasını məhdudlaşdırmaq üçün Java-da özəl konstruktor istifadə olunur. Bu, yalnız statik üzv siniflərində istifadə olunan xüsusi nümunə konstruktorudur. Əgər konstruktor özəl elan edilibsə, onun obyektlərinə yalnız elan edilmiş sinif daxilindən daxil olmaq mümkündür. Siz konstruktor sinfindən kənar obyektlərə daxil ola bilməzsiniz.
Defolt konstruktorlar özəldir, yoxsa ictimaidir?
C++-da sinif obyekti yaradıldıqda konstruktor avtomatik olaraq çağırılır. Defolt olaraq konstruktorlar sinfinictimai bölməsində müəyyən edilir.
Niyə biz ümumiyyətlə Java-da konstruktoru ictimai üzv elan edirik?
İctimai konstruktor həm də o deməkdir ki, sinfdən kənarda əlçatan ola bilər, digər sinif də onları sadə şəkildə əldə edə bilər lakin biz konstruktoru şəxsi hesab etsək, o, əlçatan olmayacaq sinifdən kənar. Həmçinin proqramın istənilən yerində sinfi işə salmaq üçün konstruktoru konstruktoru ictimai edirik.
Mən konstruktorumu necə ictimai edə bilərəm?
Paketdən kənar müştəri kodunuza obyektinizi yaratmağa icazə verirsinizsə, konstruktoru ictimai edin. Əgər yoxsabunu istəyirəm (çünki obyekt paketə xasdır və ya obyektin özü birbaşa yaradıla bilməz) package-private istifadə edin.