Student nomli klass yaratdik va unda id, name, va collage o'zgaruvchilari bor. Tasavur qiling universitetda 500 ta talaba o'qiydi har bir talaba uchun dastur xotiradan joy ajratadi, id va name takronlammas bo'ladi va bu yaxshi holat lekin 500 talaba uchun universitet nomi bir xil va har safar universitet nomi uchun xotiradan joy ajratish yaxshi emas. Bu holatda universitet nomi uchun bir marotaba xotiradan foydalanish uchun satatic kalit so'zidan foydalanamiz.
Bu misolda (instance) o'zgaruvchisi bor uni counter deb nomlaymiz konstruktor yaratib o'zgaruvchini qiymatini oshirib natijani ko'ramiz.
classCounter{
int count=0;
Counter(){
count++;
System.out.println(count);
}
publicstaticvoidmain(String args[]){
Counter c1=new Counter();
Counter c2=new Counter();
Counter c3=new Counter();
}
}
Ekranda:
1 1 1 Natija chiqadi, ko'rib turganimizdek, har safar yangi ob’yekt olganimizda counter o'zgaruvchisiga xotiradan yangidan joy ajratyapti. End shu o'zgaruvchini static deb e'lon qilib natijani ko'ramiz:
classCounter2{ staticint count=0;
Counter2(){
count++;
System.out.println(count);
}
publicstaticvoidmain(String args[]){
Counter2 c1=new Counter2();
Counter2 c2=new Counter2();
Counter2 c3=new Counter2();
}
}
Ekranda:
1 2 3
ko'rib turganingizdek har safar yangi ob’yekt olganimizda counter xotiradan yangidan joy olmayapti. static funksiyalar
Agar funksiya static kalit so'zi bilan bo'lsa, bu funksiya static funksiya deyiladi. Static funksiyalar static bo'lgan va static bo'lmagan funksiyalarda chaqirilishi mumkin. Lekin static funksiyada faqat statik funksiya chaqiriladi, static bo'lmagan funksiyalar ob’yekt olish yo'li bilan chaqiriladi.
Static bo'lgan funksiyani static funksiyada chaqirishga misol
classStaticDemo
{
publicstaticvoidcopyArg(String str1, String str2)
{
//copies argument 2 to arg1
str2 = str1;
System.out.println("First String arg is: "+str1);
System.out.println("Second String arg is: "+str2);
}
publicstaticvoidmain(String agrs[])
{
copyArg("XYZ", "ABC");
}
}
Ekranda:
First String arg is: XYZ
Second String arg is: XYZ
Static bo'lmagan funksiyalarni static funksiyada chaqirishga misol
classTest{
publicvoiddisplay()
{
System.out.println("I'm non-static method");
}
publicstaticvoidmain(String agrs[])
{
Test obj=new Test();
obj.display();
}
}
Ekranda:
I'm non-static method
17-dars - Javada Inheritance (merosxo’rlik) Ma'lum ob’yekt asosida boshqa ob’yektni yaratish jarayoniga aytiladi. Bir klassning boshqa klassdan meros olishi yordamida amalga oshiriladi. Meros olingan ob’yekt ota ob’yektdagi xususiyatlarni tanlovga ko'ra meros oladi. Masalan, avtoulov bu ota ob’yekt. Bu ob’yekt yordamida yengil mashina, yuk mashinasi, poyga mashinasi kabi boshqa ob’yektlarni yaratib olishimiz mumkin. Ota klassda bo'lgan 4 g'ildirak farzand klasslarda ham mavjud bo'ladi. Ya'ni poyga mashinasi, avtoulovdan g'ildiraklarni meros oladi. Ota klassdan meros olayotgan bola klassimiz ota klassning shaxsiy bo'lmagan ( private) barcha o'zgaruvchilari, funksiyalari va h.k larni meros qilib oladi. Javada meros olinishi
Funksiyani qayta yuklash uchun (runtime(dastur ishlab turgan vaqt) da ko'pformalikdan foydalanishda )
Kodni qayta ishlatish uchun foydalaniladi.
classSubclass-nameextendsSuperclass-name
{
//funskiyalar va o'zgaruvchilar
}
extends kalit so'zi yangi klass yaratayotganimizda Super klass (Ota klass) dan meros olish uchun ishlatiladi.
Java texnologoyasida quyi klass super klassdan meros oladi. Yani yangi klass quyi klassni chaqiradi.
Yuqorida shaklda Programmer subclassi va Employee super klassi ko'rsatilgan. Bunda shu ikkita klassni orasidagi bog'lanish tasvirlangan.
System.out.println("Bonus of Programmer is:"+p.bonus);
}
}
Natija :
Programmer salary is:40000.0
Bonus of programmer is:10000 Yuqoridagi misolda Programmer klassi Employee klassidan meros olyapti va undagi floatsalary o'zgaruvchisini o'ziga o'zlashtirib olyapti. Javada meros olinish turlari
Javada asosiy klassdan 3 xil usulda meros olish mumkin ular single (bir tomonlama), multilevel (bir necha class orqali) va hierarchical (iyerarxiya).
Javada bir vaqtning o'zida bir necha klass dan meros olib bo'lmaydi.
classA{
voidmsg(){System.out.println("Hello");}
}
classB{
voidmsg(){System.out.println("Welcome");}
}
classCextendsA,B{
publicstaticvoidmain(String args[]){
C obj=new C();
obj.msg();//
}
} Bu yerda Compile Time Error (Kompilyatsiya Vaqtida Xatolik) bo'ladi, chunki bir vaqtning o'zida C klassi A, B klasslaridan meros olyapti. Yuqorida aytganimizdek javada bir vaqtning o'zida bir necha klassdan meros olib bo'lmaydi.
18-dars - Overriding (qayta yuklash) Funksiyalari Agar subclassimizdagi (bola klass) funksiya super(ota klass) klassimizdagi funksiya bilan bir xil bo'lsa, bu funksiyalar qayta yuklanuvchi funksiyalar deyiladi.
Javada qayta yuklanuvchi funksiyadan foydalanish:
Qayta yuklanuvchi funksiyadan avvaldan Ota klassda yaratib qo'yilgan funksiyaning o'ziga xos amalga oshirilishini ta'minlashda;
Qayta yuklanuvchi funksiyaning ishchi vaqt (runtime)da (ko'p formalik) polymorphismda
foydalaniladi.
Javada Qayta yuklanuvchi funksiya uchun qoidalar:
Funksiya super klass(ota) dagi funksiya nomi bilan bir xil bo'lishi kerak
Funksiya super klass(ota )dagi funksiya parametrlari bilan bir xil bo'lishi lozim