Mavzu: Javada merosxo`rlik(instance)
1. karolina_2427 (M) (62) [off] | TXT | 4| 16 May 2021, 14:31
Ushbu maqolada biz OOPning asosiy printsiplaridan biri haqida gaplashamiz, bu siz aniq tushunishingiz kerak - meros.

Meros nima?
Meros - bu boshqa sinf asosida sinflar yaratishga imkon beradigan mexanizm.

Demak, bir sinf boshqasining xususiyatlarini - uning usullari va o'zgaruvchilarini "meros qilib olishi" mumkin.

Baza bo'lgan sinf deyiladi: asosiy, super, ota-ona .
Yaratilgan sinf nomlanadi: avlod, merosxo'r yoki kelib chiqqan sinf .
[b]Misol[/b

Tasavvur qilaylik, bizda itlar sinfi bor . Har bir itda nima bor? To'rt oyoq, bitta quyruq - va ular ham dumillashni va dumini silkitishni bilishadi.

Keling, tasavvur qilaylik, biz turli xil zotlar uchun - cho'ponlar, buldoglar va lapdoglar uchun sinflar yaratmoqchimiz.



Barcha cho'ponlar, buldoglar va lapdoglarning to'rt oyoqlari va dumlari bo'ladi, ular ham xurrayib, dumini silkitadilar.

Albatta, biz ushbu metodlarni va o'zgaruvchilarni har bir sinfga ko'chirib olishimiz mumkin. Lekin nega? Biz merosdan foydalanishimiz mumkin .

Agar biz barcha nasl sinflarini Dog sinfidan meros qilib olsak , ular uning barcha usullari va o'zgaruvchilariga avtomatik ravishda kirish huquqiga ega bo'ladilar . Xo'sh, deyarli hamma.

Tabiiyki, Java o'zi ham meros mexanizmidan foydalanadi. Masalan, tilning barcha sinflari Object sinfini , ArrayList va LinkedList sinflari esa List sinfini egallaydi .
Men qanday qilib meros olaman?
Meros oson.

Sinfni meros qilib olish uchun siz extends kalit so'zidan foydalanishingiz kerak :

class Dobermann extends Dog {

}
1
2
3
class Dobermann extends Dog {

}
Ko'rib turganingizdek, kalit so'z sinf nomidan keyin joylashtirilgan:



Meros qoidalari
Qoida 1. Biz faqat bitta sinfni meros qilib olamiz.

Java ko'p sinfli merosni qo'llab-quvvatlamaydi. Bitta sinf, bitta ota-ona.

Iltimos, e'tibor bering - siz o'zingizni meros qilib ololmaysiz!

Qoida 2. Xususiy o'zgaruvchilar va usullardan tashqari hamma narsa meros qilib olinadi.

Yuqorida biz derivativ sinf ota-onaning barcha o'zgaruvchilari va usullaridan foydalanish imkoniyatiga ega bo'lishini aytdik. Bu butunlay to'g'ri emas.

Aslida, xususiy modifikator bilan belgilangan barcha usullar va o'zgaruvchilar meros qilib olingan sinf uchun mavjud emas.

Qoida 3. Ota-onalar sinfining usulini qayta tuzing.

Tasavvur qilaylik, biz sinfni meros qilib olamiz, lekin bizga meros qolgan hamma narsa yoqmaydi. Aytaylik, biz ma'lum bir --- usul ota-onadan boshqacha ishlashini xohlaymiz.

Ota-ona usulini bekor qilish uchun @Override yozing :

class Dobermann extends Dog {

@Override
public void voice()
{
System.out.println("Bark!");
}

}
1
2
3
4
5
6
7
8
9
class Dobermann extends Dog {

@Override
public void voice()
{
System.out.println("Bark!");
}

}
Qoida 4. Biz super kalit so'z yordamida ota-ona usullarini chaqiramiz.

Tasavvur qilaylik, siz ota-onalar sinfining usulini ozgina o'zgartirmoqchisiz - shunchaki ikkita satr qo'shing. Keyinchalik, bizning usulimizda super kalit so'z yordamida ota-ona usulini chaqirishimiz mumkin .

Masalan, bizda ovozli () usuli bilan it sinfi mavjud :

public class Dog {
public void voice(){
System.out.println("Hello World from Dog class!");
}
}
1
2
3
4
5
public class Dog {
public void voice(){
System.out.println("Hello World from Dog class!");
}
}
Bundan tashqari, bizda Dog sinfidan meros bo'lib o'tgan va o'ziga xos ovoz () uslubiga ega bo'lgan Dobermann klassi mavjud . Unda biz super kalit so'z orqali ota-ona usulini chaqiramiz :

class Dobermann extends Dog {
@Override
public void voice()
{
super.voice();
System.out.println("Hello World from Dobermann class!");
}
}
1
2
3
4
5
6
7
8
class Dobermann extends Dog {
@Override
public void voice()
{
super.voice();
System.out.println("Hello World from Dobermann class!");
}
}
Endi Dobermann sinfidagi voice () usulini chaqiramiz :

public class Test {
public static void main(String[] args) {
Dobermann d = new Dobermann();
d.voice();
}
}
1
2
3
4
5
6
public class Test {
public static void main(String[] args) {
Dobermann d = new Dobermann();
d.voice();
}
}
Konsolda biz quyidagilarni ko'ramiz:



Shunday qilib, biz ushbu ovozni () dastlab ota-ona sinfidan usul deb nomlanganini, so'ngra konsolga "Hello World from Dobermann class!" Satrini bosganini ko'ramiz. ...

Qoida 5. Biz merosni taqiqlaymiz.

Agar siz kimdir sizning sinfingizdan meros olishini istamasangiz, uning oldiga oxirgi o'zgartiruvchini qo'ying . Masalan:

final class Dog {

}
1
2
3
final class Dog {

}
Endi merosxo'r yaratishga harakat qilaylik:

class Dobermann extends Dog {

}
1
2
3
class Dobermann extends Dog {

}
Ma'lumotlar
Mavzu id raqami: 3587
Mavzuga oid xabarlar soni: 1 ta
So'ngi faollik vaqti: 16 May 2021, 14:31
Mavzuni ko'rishgan: 4 kishi
» txt shaklida yuklab olish
» Mavzudagi yangi xabarlardan xabardor bo'lishni rad etish
www.uzmasters.ru Onlayn 116 (0/116)
www.uzmasters.ru Forumga a'zo bo'lish
www.uzmasters.ru Forumdan qidirish
www.uzmasters.ru Bosh sahifa
Яндекс.Метрика UzMasterS.Ru