Upcasting
Biz ball yuqorida muhokama yoki sinf ob'ekti anglatadi ota-sinf mos yozuvlar ob'ekt bo'lsa, u holda biz uni Upcasting qo'ng'iroq.
Oddiy misol yordamida upcastingni tushunaylik.
Bizda 'BaseClass' klassi borligini ko'rib chiqing va biz ushbu Baseclassni yangi sinf yaratish uchun kengaytiramiz DerivedClass. Quyida ko'rsatilgan bo'lib, bu tuzilishi ko'rinadi.
sinf BaseClass {
….// Bu erda BaseClass kodi
}
sinf DerivedClass baseclass{uzaytiradi
….// Bu erda DerivedClass kodi
}
Endi upcasting amalga oshirish uchun biz turi baseclass bir ma'lumot o'zgaruvchilar e'lon qiladi. Quyidagi kod bayonotida amalga sifatida keyingi, biz sinf baseclass mos yozuvlar uchun DerivedClass bir ob'ekt tayinlash.
BaseClass bazasi = yangi DerivedClass (); / / Upcasting Shunday qilib, bu erda biz DerivedClass ob'ektini BaseClass-ga tushirdik deb aytishimiz mumkin. Runtime polimorfizmiga kelsak, upcasting tushunchasi juda muhimdir. Shunday qilib, umuman olganda, upcasting-bu ota-ona yoki superklassga murojaat qilish uchun bola yoki subklass ob'ektlarini tayinlash jarayoni.
SuperClass ma'lumot = yangi sinf ob'ekt; Quyidagi Java dasturi usulni bekor qilishni namoyish etadi va shuningdek, bekor qilingan usul qo'ng'iroqlarini ish vaqtida hal qilish uchun qanday qilib translyatsiya qilinishini ko'rsatadi.
//base/parent class
class Parent {
void Print() //print method
{
System.out.println("Parent::Print() method");
}
}
//child class 1 inheriting from Parent
class child1 extends Parent {
void Print() //overridden print method
{
System.out.println("child1::Print() method");
}
}
//child class 2 inheriting from Parent
class child2 extends Parent {
void Print() //overridden print method
{
System.out.println("child2::Print() method");
}
}
class Main {
public static void main(String[] args) {
Parent parent = new Parent();
parent.Print(); //executes parent Print () method
parent = new child1(); //upcasting
parent.Print(); //executes child1 Print () method
parent = new child2(); //upcasting
parent.Print(); //executes child2 Print () method
|
Chiqish:
Yuqoridagi dasturda bizda ikkita sinf bor, ya'ni child1 va child2 ikkalasi ham 'ota-ona' sinfidan olingan. Ota-ona sinfida child1 va child2 sinflarida bekor qilingan 'chop etish' usuli mavjud. Keyin asosiy usuli, biz 'ota-ona'nomli ota-sinf mos yozuvlar ob'ektini yaratish. Birinchidan, biz uni ota-sinf ob'ektini tayinlash va keyin "chop etish()" usuli qo'ng'iroq. Keyin biz buni avval bola1 ob'ektini, so'ngra bola2 ob'ektini ota-ona ma'lumotnomasiga tayinlash orqali takrorlaymiz. Chiqish ko'rsatadi, ota-mos yozuvlar mazmuniga qarab, va tegishli chop etish usuli deyiladi. Dinamik/Ish Vaqti Polimorfizmining Afzalliklari
Dinamik polimorfizm bilan dasturchiga usullarni bekor qilishga ruxsat beriladi.
Bu sinflarga umumiy amalga oshiriladigan usulni aniqlashga imkon beradi, keyinchalik uning hosilalari bekor qilishi va aniq bajarilishini ta'minlashi mumkin.
Bilan dinamik usulni jo'natish, usul qo'ng'irog'i aksincha, ish vaqtida hal qilinadi ortiqcha yuk kompilyatsiya vaqtida qaror qilingan. Bu dasturchilar uchun ko'proq moslashuvchanlikni ta'minlaydi.
Sifatida ish vaqti polimorfizmi tegishli usulni ish vaqtida qo'ng'iroqqa bog'laydi va biz uni dinamik bog'lash yoki kech bog'lash deb ham ataymiz. Boshqa tomondan kompilyatsiya vaqti polimorfizmi statik bog'lanishni yoki erta bog'lanishni qo'llab-quvvatlaydi.
Do'stlaringiz bilan baham: |