JavaRush /Kurslar /All lectures for UZ purposes /Classlarni yuklash tartibi, statik ma'lumotlar…

Classlarni yuklash tartibi, statik ma'lumotlar…

All lectures for UZ purposes
Daraja, Dars
Mavjud

— Salom, Amigo! Risha senga yangi va juda qiziqarli mavzu haqida gapirib berdi deb eshitdim?!

— Ha, Kim.

— Mening mavzuim ham kam qiziqarli emas. Senga classlarni xotiraga yuklash haqida aytmoqchiman.

Java-dagi klasslar - bu diskdagi fayllar, ular bayt kodini o'z ichiga oladi - kompilyatsiya qilingan Java kod.

— Ha, eslayman.

— Java-mashina ularni zarurat bo'lmasa yuklamaydi. Kodda qachondir classga murojaat qilinadigan bo'lsa, Java-mashina uni yuklanganligini tekshiradi. Va agar yo'q bo'lsa, unda uni yuklaydi va ishga tushiradi.

Classning ishga tushurilishi - bu uning barcha statik o'zgaruvchilariga qiymatlarni tayinlash va barcha statik bloklarni chaqirish.

— Bu ob'ektning konstruktorini chaqirishga o'xshaydi. Statik blok nima?

— Agar ob'ekt o'zgaruvchilarini ishga tushirish uchun murakkab kodni ishlatish kerak bo'lsa (masalan, fayldan nimanidir yuklab olish), biz buni konstruktor orqali amalga oshirishimiz mumkin. Statik o'zgaruvchilar bu imkoniyatdan mahrum. Lekin bunga ehtiyoj qolganligi sababli, klasslarga statik blok yoki bloklar qo'shish mumkin, ular mohiyatiga ko'ra statik konstruktorlarni chaqirishga teng.

Mana bu qanday ko'rinishga ega:

Kod Aslida nima bo'ladi
class Cat
{
public static int catCount = 0 ;
public static String namePrefix;

static
{
Properties p = new Properties();
p.loadFromFile("cat.properties");
namePrefix = p.get("name-prefix");
}

public static int maxCatCount = 50;

static
{
Properties p = new Properties();
p.loadFromFile("max.properties");
if (p.get("cat-max") != null)
maxCatCount = p.getInt("cat-max");
}

}

class Cat
{
public static int catCount;
public static String namePrefix;
public static int maxCatCount;

//statik konstruktorlar Java'da taqiqlangan,
//lekin agar ular mavjud bo'lganida, hamma narsa
//ana shunday ko'rinishda bo'lardi
public static Cat()
{
catCount = 0;

Properties p = new Properties();
p.loadFromFile("cat.properties");
namePrefix = p.get("name-prefix");

maxCatCount = 50;

Properties p2 = new Properties();
p2.loadFromFile("max.properties");
if (p2.get("cat-max")!=null)
maxCatCount = p2.getInt("cat-max");
}
}

Bu konstruktorni chaqirishda nima sodir bo'lishiga juda o'xshaydi. Men hatto uni mavjud bo'lmagan statik konstruktor ko'rinishida yozdim.

— Ha, hammasini tushundim.

— A'lo darajada.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION