Java dasturlash tilini o‘rganishni davom ettiramiz. Darslar borgan sari qiyinlashib bormoqda, shuning uchun har bir maqolani diqqat bilan o‘qib, tushunmasangiz, adabiyotlar orqali ham qaytadan takrorlashingizni maslahat beraman. Kodlarni yodlab qolish shart emas, asosiysi ma’nosini tushunib oling.

Maqolalar mobaynida, ob’yektga yo‘naltirilgan dasturlash yo‘nalishini o‘rganishni boshlagan edik, ya’ni klassslar, ob’yektlar, metodlar haqida ma’lumotlarga ega bo‘ldik. Bu maqolada shu yo‘nalishni davom ettiraman. Klass ichidagi o‘zgaruvchilar va metodlarga tegishli bo‘lgan ruxsatlar bilan tanishamiz.

Keling, dastlab klasslarga oid bir misolni ko‘ramiz.

package misol;
class son
{
   int var1=10;
   int sum(int var2)
   {
       return var1*var2;
   }
}
public class Misol {
    public static void main(String[] args) {
        son mm = new son();
        System.out.println(mm.sum(5));
    }
}

Demak, dasturda «son» nomli klass hosil qilindi, uning «var1» degan o‘zgaruvchisi bor, qiymati «10» ga teng. Undan tashqari bu klassda «sum» degan metod bor va u «int» tipini qaytaradi. Bu metod bitta «int» tipidagi parametr qabul qiladi. Natija sifatida, «var1» va «var2» o‘zgaruvchilar ko‘paytmasi qaytariladi.

Asosiy metodda(main()), «son» klassining «mm» nomli ob’yekti hosil qilindi va bu ob’yekt orqali «sum» metodi chaqirilib, «var2» o‘zgaruvchi sifatida «5» soni berildi va qiymat ekranga chiqarildi.

dostup_1

Bu misolda, klass o‘zgaruvchisi(var1) va klass metodi(sum) hech qanday ruxsatni bildiradigan kalit so‘z orqali ifodalanmagan. Demak, bu o‘zgaruvchi va metodga odatiy ruxsat beriladi(klass a’zolari faqat shu paketda ishlatilishi mumkin).

Klass metodlari va o‘zgaruvchilariga quyidagi ruxsatlar berilishi mumkin.

1. Public — klass o‘zgaruvchi va metodlariga, o‘zining klasslari, shu paketdagi boshqa klasslar(albatta main orqali ham) va tashqari (boshqa paket)dan murojaat qilish mumkin.

2. Protected — klass o‘zgaruvchi va metodlariga o‘zining klasslari, shu paketdagi boshqa klasslar orqali murojaat qilish mumkin, lekin boshqa paketdan turib bularni ishlatib bo‘lmaydi.

3. Private — klass o‘zgaruvchi va metodlariga faqat o‘zining klassi orqali murojaat qilish mumkin, ob’yekt orqali bu o‘zgaruvchi va metodlarni chaqirib ishlatib bo‘lmaydi.

YUqoridagi misolni, «private» ruxsati bilan ishlatib ko‘ramiz, ya’ni misolni quyidagicha o‘zgartiramiz.

package misol;
class son
{
int var1=10;
   private int sum(int var2)
   {
       return var1*var2;
   }
}
public class Misol {
    public static void main(String[] args) {
        son mm = new son();
        System.out.println(mm.sum(5));
    }
}

Bu dasturni ishlatsangiz, xatolik haqida ma’lumot olasiz. Chunki, «sum» metodi «private» ruxsati bilan e’lon qilingan, ya’ni faqat o‘zining klassi ichida ishlatish mumkin. main() metodi ham bu metodni ishlata olmaydi, ruhsat yo‘q. Eng to‘g‘risi, bu misolni quyidagicha o‘zgartirish lozim.

package misol;
class son
{
   private int var1=10;
   protected int sum(int var2)
   {
       return var1*var2;
   }
}
public class Misol {
    public static void main(String[] args) {
        son mm = new son();
        System.out.println(mm.sum(5));
    }
}

Klass o‘zgaruvchisi, faqat o‘z klassida ishlatilganligi sababli, u «private» ruxsati bilan e’lon qilindi, «sum» metodi esa main() metodida chaqirilganligi sababli, «protected» ruxsati bilan e’lon qilindi, ya’ni boshqa paketlar bu metodni ishlataolmaydi.

Agar siz klass ichidagi «var1» o‘zgaruvchisini o‘zgartirmoqchi bo‘lsangiz, bu o‘zgaruvchini «protected» ruxsati bilan e’lon qilishingiz lozim bo‘ladi.

package misol;
class son
{
   protected int var1=10;
   protected int sum(int var2)
   {
       return var1*var2;
   }
}
public class Misol {
    public static void main(String[] args) {
        son mm = new son();
        mm.var1=20;
        System.out.println(mm.sum(5));
    }
}

13-qatorda «son» nomli klassdagi, «var1» o‘zgaruvchi o‘zgartirildi va «sum» metodi chaqirilganda(14-qator), «var1» o‘zgaruvchisi yangi qiymatni ishlatdi.

dostup_2
Endi, «public» ruxsatini misol orqali ko‘rsatib o‘taman. Uning uchun bizga 2 ta paket kerak bo‘ladi. Bu orqali, paketlar o‘rtasida «public» ruxsati bilan o‘zgaruvchi almashinishini ko‘rsataman.

Dastlab yangi proyekt hosil qilamiz: Файл -> Создать проект.

dostup_3

Имя проекта: pack1

Главный класс: pack1.Pack1

Готово.

Keyin shu proyekt ichida yana bitta paket yaratamiz(«Пакеты исходных кодов» yozuviga sichqonchani o‘ng tugmasini bosib, «Новый->Пакет Java«):

dostup_4

Unga «pack2» deb nom berib, «Готово» tugmasini bosamiz, bu paket kulrang rangli bo‘lib namoyon bo‘ladi. Shundan so‘ng, bu paket ichida klass hosil qilamiz(paket nomiga sichqonchani o‘ng tugmasini bosib, Новый->Класс Java).

dostup_5

Imya klassa: akmx, Готово.

Ikkita paket hosil qilib oldik, endi «pack2» paketi ichiga quyidagi kodni yozamiz.

package pack2;
public class akmx
{
    public int pak2=15;
}

Dastlab, «pack2» paketi hosil qilindi, so‘ng «public» ruxsatiga ega «akmx» nomli klass yaratildi va uning ichida «public» ruxsatiga ega, «int» tipiga oid «pak2» o‘zgaruvchi hosil qilindi va unga «15» soni qiymat sifatida berildi.

Endi, «pack1» ichiga quyidagilarni yozamiz.

package pack1;
import pack2.akmx;
class son
{
   protected int var1=10;
   protected int sum(int var2)
   {
       akmx aa= new akmx();
   return var1*var2+aa.pak2;
   }
}
public class Pack1 {
    public static void main(String[] args) {
        son mm = new son();
        System.out.println(mm.sum(5));

    }

}

«import» komandasi orqali, «pack1» paketga «pack2» paketi qo‘shildi. Uning sintaksisi:

import  paket _nomi.klass nomi;

Shundan so‘ng, «son» nomli klass yaratildi va «sum» nomli metod hosil qilindi. Keyin «pack2» paketidagi «akmx» nomli klassning ob’yekti yaratilib(aa), undagi «pak2» o‘zgaruvchichi chaqirildi va qo‘shish amali bajarildi(9-qator). Agar «pack2» paketilagi klass «public» orqali yaratilmaganda, uning ob’yektini hosil qilaolmas edik(8-qator). Agar «pak2» o‘zgaruvchi «public» orqali yaratilmaganda, uning qiymatini ham chaqiraolmas edik. Dastur natijasi

dostup_6

Xulosa qiladigan bo‘lsak, har doimgidek, qo‘yilgan vazifaga qarab, ruxsatlar ham belgilanar ekan.