Qanday qilib referens tiplardagi meros va polimorfizm?
sobes.tech AI
AIdan javob
Merosxo‘rlik — bu yangi sinf (subsinf/bolalar sinfi) mavjud sinfning (super sinf/ota sinf) xususiyatlari (maydonlar) va xulq-atvorini (metodlar) meros qilib olish imkonini beradigan mexanizm bo‘lib, funksionallikni kengaytirish yoki qayta yozishni ta’minlaydi. Bu kodni qayta ishlatishni rag‘batlantiradi va "bu narsa" (is-a) munosabatlarini o‘rnatadi.
Polimorfizm — bu turli sinflarga tegishli ob’ektlarning, bajarilish vaqtida ularning aniq turiga qarab, bir xil metod nomiga turlicha javob berish imkoniyatidir. Bu kodning moslashuvchanligi va kengaytirilishini ta’minlaydi, subsinflardagi ob’ektlarni super sinfga murojaat qilish orqali ishlash imkonini beradi.
Ushbu ma’lumot turlari (sinflar) uchun bu tushunchalar muhim rol o‘ynaydi:
- Merosxo‘rlik: Subsinf super sinfning a’zolariga kirish huquqiga ega bo‘lib, o‘zining a’zolarini qo‘shishi yoki meros qilib olingan metodlarning xulq-atvorini o‘zgartirishi mumkin (qayta yozish - overriding). Subsinf ob’ekti har qanday joyda ishlatilishi mumkin, bu yerda super sinf ob’ekti kutilyapti.
- Polimorfizm: Bir xil merosxo‘rlik hierarhiyasiga tegishli turli ob’ektlar, bir xil kod bilan ishlov berilishi mumkin, bir xil metod chaqiriladi, ammo bu metodning amalga oshirilishi, bajarilish vaqtida ob’ektning aniq turiga mos bo‘ladi.
Java misoli:
// Super sinf (ota sinf)
class Animal {
public void makeSound() {
System.out.println("Ovoz chiqaradi");
}
}
// Subsinf (bolalar sinfi), Animal’dan meros oladi
class Dog extends Animal {
// Super sinfdan metodni qayta yozish
@Override
public void makeSound() {
System.out.println("Hav!");
}
}
// Subsinf (bolalar sinfi), Animal’dan meros oladi
class Cat extends Animal {
// Super sinfdan metodni qayta yozish
@Override
public void makeSound() {
System.out.println("Miy!");
}
}
// Polimorfizm misoli
public class PolymorphismExample {
public static void main(String[] args) {
Animal myAnimal = new Animal(); // super sinf ob’ekti
Animal myDog = new Dog(); // sub sinf ob’ekti, super sinfga murojaat
Animal myCat = new Cat(); // sub sinf ob’ekti, super sinfga murojaat
myAnimal.makeSound(); // Chiqish: Ovoz chiqaradi
myDog.makeSound(); // Chiqish: Hav! (polimorfizm - Dog metodini chaqirish)
myCat.makeSound(); // Chiqish: Miy! (polimorfizm - Cat metodini chaqirish)
}
}