Java Kirish modifikatori. (Sinf/Class)

Java dasturlash tilida, kirish modifikatori joriy sinf, uning maydonlari (attributlari), konstruktorlari va metodlariga qaysi classlar murojaat qila olishini hal qiladi. Quyidagi kirish modifikatorlari class elementlarining har birida alohida uchrashi mumkin:

  • private
  • default (package)
  • protected
  • public

Quyidagi jadvalda siz yuqoridagi kirish modifikatorlari qanday ishlashini ko’rishingiz mumkin:

Access modifiers in java

Endi kirish modifikatorlarining har biri bilan alohida tanishib chiqamiz.

Private

Agar biror classning o’zgaruvchisi yoki metodi private bilan e’lon qilinsa, ushbu o’zgaruvchi yoki metod faqatgina joriy classning ichida foydalanilishi mumkin. Joriy classdan meros olgan classlar yoki boshqa classlar private o’zgaruvchi va metodlardan foydalana olmaydi. Quyidagi kodga e’tibor bering:

public class Soat {
   private long vaqt = 0;
}

Classlarning o’zlari private sifatida yaratilishi mumkin emas. Agar class private sifatida yaratilsa, bu classga boshqa classlar murojaat qila olmaydi, demak bu classdan umuman foydalanib bo’lmaydi.

Real dasturlashda, class maydonlari private bilan e’lon qilinadi va bunday holatlarda ularga to’g’ridan-to’g’ri murojaat qilib bo’lmaydi. Private maydonlarga murojaat qilish uchun getter/setter lardan foydalaniladi. Quyida misol keltiramiz:

public class Soat {
   private long vaqt = 0;

   public long getVaqt() {
       return this.vaqt;
   }

   public void setVaqt(long vaqt) {
       this.vaqt = vaqt;
   }
}

Default

Birorta kalit so’z yordamisiz yaratilgan class, o’zgaruvchi, konstruktor yoki metod default sifatida qaraladi. Default sifatida e’lon qilingan class, o’zgaruvchi, konstruktor yoki metod joriy sinf yoki joriy sinf bilan bir papkada joylashgan sinflar tomonidan foydalanilishi mumkin. Shuning uchun default kirish modifikatori package (papka) deb ham nomlanadi.

Agar joriy sinfdan meros olgan sinflar boshqa papkada joylashgan bo’lsa, default attributlar va metodlarga murojaat qila olmaydi.

Quyida default o’zgaruvchi e’lon qilamiz va unga murojaat qilamiz:

public class Soat {
   long vaqt = 0;
}
public class Main {
   Soat soat = new Soat();

   public long soat(){
       return soat.vaqt;
   }
}

Protected

Protected kirish modifikatori default kirish modifikatoriga qo’shimcha ravishda bir xil papkada joylashmagan, ammo joriy classdan meros olgan subclasslarga ham murojaatga ruxsat beradi. Quyidagi misolga e’tibor bering:

public class Soat {
   protected long vaqt = 0;
}
public class SmartSoat() extends Soat{

   public long vaqtniOlish() {
       return this.vaqt;
   }
}

Public

Public sifatida e’lon qilingan class, o’zgaruvchi, konstruktor va metodlar xohlagan joydagi kodda chaqirilishi mumkin, u boshqa class yoki boshqa papkada bo’lsa ham:

public class Soat {
   public long vaqt = 0;
}
public class Main {
   Soat soat = new Soat();

   public long soat(){
       return soat.vaqt;
   }
}

Class kirish modifikatorlari

Shuni ta’kidlash joizki, classga biriktirilgan kirish modifikatori uning maydonlari, konstruktorlari va metodlariga biriktirilgan kirish modifikatorlaridan ustun turadi. Agar class default sifatida yaratilsa, demak boshqa papkadagi classlar ushbu classga va uning parametrlariga murojaat qila olmaydi, garchi uning parametrlari public yoki public static bo’lsa ham.

Classlar private va protected sifatida e’lon qilinishi mumkin emas. Ular faqat default yoki public bo’lishi mumkin.