Asosiy farq – bu Java-dagi super va super
“This” va “super” kalit soʻzlari Java dasturlashda qoʻllaniladi. Ushbu kalit so'zlarni o'zgaruvchilar yoki boshqa identifikator nomi sifatida ishlatib bo'lmaydi. Java ob'ektga yo'n altirilgan dasturlashni (OOP) qo'llab-quvvatlaydi. Dastur yoki dasturiy ta'minot ob'ektlar yordamida modellashtirilishi mumkin. Ob'ektlar sinflar yordamida to'yingan. OOPning bir ustuni merosdir. Bu kodni qayta ishlatishni ta'minlaydi. Mavjud bo'lgan sinflar yuqori sinflar va olingan sinflar kichik sinflardir. Super kalit so'z superklass ob'ektiga murojaat qilish uchun ishlatilishi mumkin. Tizimda bir nechta ob'ektlar mavjud. "This" kalit so'zi joriy ob'ektga murojaat qilish uchun ishlatiladi. Bu va super o'rtasidagi asosiy farq shundaki, "bu" joriy ob'ektga murojaat qilish uchun foydalaniladigan mos yozuvlar o'zgaruvchisi, "super" esa darhol supersinf ob'ektiga murojaat qilish uchun foydalaniladigan mos yozuvlar o'zgaruvchisidir.
Bu Java-da nima?
“Bu” kalit soʻzi joriy obyektga murojaat qilish uchun ishlatiladi. Berilgan Java dasturiga murojaat qiling.
01-rasm: Java dasturi ushbu kalit soʻz yordamida
Java'da o'zgaruvchilarning uch turi mavjud. Ular misol o'zgaruvchilari, mahalliy o'zgaruvchilar va sinf o'zgaruvchilari. Yuqoridagi dasturga ko'ra, sinf xodimi ikkita misol o'zgaruvchisiga ega. Ular identifikator va ism. Mahalliy o'zgaruvchilar - bu usullarga tegishli o'zgaruvchilar. Sinf o'zgaruvchilari barcha ob'ektlar tomonidan taqsimlanadi. Id va ism Employee konstruktoriga uzatiladi. Agar dasturchi id=id yozsa; u misol o'zgaruvchilarini ishga tushirmaydi, chunki Konstruktorda allaqachon id va nom mavjud. Misol o'zgaruvchilar uchun qiymatlar yo'q. Shunday qilib, ularni chop etish null ko'rsatiladi. Buni ishlatganda, u joriy ob'ektga ishora qiladi. Shuning uchun konstruktorga id va nom berish misol oʻzgaruvchilarini oʻrnatishi mumkin.
“Bu” kalit soʻzi joriy sinf usulini chaqirish uchun ishlatilishi mumkin. Berilgan java dasturiga qarang.
ommaviy sinf BuDemo{
ommaviy statik bekor asosiy(String args){
Mening sinfim myClass=new Myclass();
mening sinfim. B();
}
}
sinf Myclass{
ommaviy bekor A(){
System.out.println("A");
}
ommaviy bekor B(){
System.out.prinltn("B");
this. A();
}
}
Myclass sinfida ikkita usul mavjud. Ular A va B usullari. Myclass ob'ektini yaratish va B usulini chaqirishda B, A chiqish sifatida chop etiladi. B usulida B ni chop etgandan so'ng this. A() kabi bayonot mavjud. Buning yordamida joriy sinf usuli ishga tushirildi.
Bu kalit soʻzdan joriy sinf konstruktorini chaqirish uchun ham foydalanish mumkin. Berilgan dasturga qarang.
ommaviy sinf BuDemo{
ommaviy statik bekor asosiy(String args){
A obj=yangi A(5);
}
}
sinf A{
ommaviy A(){
System.out.println("Konstruktor A");
}
ommaviy A(int x){
this();
System.out.println(“Parametrlangan konstruktor A”);
}
}
Yuqoridagi dasturga muvofiq, A sinf standart konstruktor va parametrlangan konstruktorga ega. A ob'ektini yaratishda parametrlangan konstruktor chaqiriladi. Parametrlangan konstruktorda shunday (); U joriy sinf konstruktorini chaqiradi, ya'ni A().
Javada super nima?
“Super” kalit soʻzi meros bilan bogʻliq. Meros - ob'ektga yo'n altirilgan dasturlashning asosiy tushunchasi. Bu mavjud sinfning xossalari va usullaridan yangi sinfga foydalanish imkonini beradi. Mavjud sinf ota-sinf yoki yuqori sinf sifatida tanilgan. Yangi sinf bolalar sinfi yoki quyi sinf sifatida tanilgan.
“Super” mos yozuvlar oʻzgaruvchisi boʻlib, bevosita ota-sinf obyektiga murojaat qilish uchun ishlatiladi. Super kalit so'zi darhol ota-sinf namunasi o'zgaruvchisiga murojaat qilishi yoki darhol ota-klass usulini chaqirishi mumkin. super() darhol ota-sinf konstruktorini chaqirish uchun ishlatiladi.
A va B kabi ikkita sinf bor deb faraz qilaylik. A klassi supersinf, B klassi quyi sinf. A va B sinflarining ikkalasida ham ko‘rsatish usuli mavjud.
ommaviy sinf A{
ommaviy bekor displey(){
System.out.println("A");
}
}
ommaviy B klassi A uchun kengaytiriladi{
ommaviy bekor displey(){
System.out.println("B");
}
}
B tipidagi ob'ektni yaratishda va displey usulini chaqirganda, u B chiqishini beradi. A sinfida displey usuli mavjud, lekin u B kichik sinfni ko'rsatish usuli bilan bekor qilinadi. Agar dasturchi A sinfidagi displey usulini chaqirmoqchi bo'lsa, u holda super kalit so'zdan foydalanishi mumkin. Berilgan Java dasturiga murojaat qiling.
02-rasm: super kalit soʻz yordamida Java dasturi
Yuqoridagi dasturga koʻra, A sinfida 10 qiymatiga ega boʻlgan oʻzgaruvchi nomli raqam mavjud. B klassi A ni kengaytiradi va 20 qiymatiga ega boʻlgan oʻzgaruvchi nomli raqamga ega. Odatda, B tipidagi obʼyekt yaratishda va koʻrsatish usulini chaqirishda pastki sinfdagi raqamni berishi kerak, chunki superklass qiymati yangi sinf tomonidan bekor qilingan. Super.num dan foydalanib, superklass raqami qiymati chop etiladi.
Super() dan superklass konstruktorini chaqirish uchun foydalanish mumkin. Quyidagi dasturga qarang.
ommaviy sinf Asosiy {
ommaviy statik bekor asosiy(String args){
B obj=yangi B();
}
}
sinf A{
A(){
System.out.println("A");
}
}
B sinfi A{
B(){
super();
System.out.println("B");
}
}
Yuqoridagi dasturga muvofiq, A sinfida A () konstruktori mavjud. B sinfida B () konstruktori mavjud. B klassi A sinfini kengaytiradi. B tipidagi ob'ektni yaratishda u A, B chiqish sifatida chop etadi. B () konstruktorida super () mavjud. Shuning uchun avval A konstruktor chaqiriladi va keyin B ga o'tadi.super () yozilmagan bo'lsa ham, sukut bo'yicha asosiy konstruktor chaqiriladi.
Usuldan super foydalanish quyidagicha.
03-rasm: Superklass usulini ishga tushiruvchi Java dasturi
Yuqoridagi dasturga ko'ra, A sinfida ko'rsatish usuli mavjud. B sinfida ko'rsatish usuli ham mavjud. B klassi A ni kengaytiradi. B tipidagi ob'ektni yaratishda va displey usulini chaqirishda A va B ko'rinishida chiqishlar beriladi. B sinfidagi displey usulida A sinf ko'rsatish usuli super.display() yordamida chaqiriladi. Ushbu usul birinchi navbatda "A" ni chop etadi. Keyin “B” harfini chop etadi.
Bu va super oʻrtasidagi oʻxshashlik nimada?
Ikkalasi ham Java dasturlashda kalit soʻzlar
Bu va super oʻrtasidagi farq nima?
Bu Super vs Super |
|
“Bu” joriy obyektga murojaat qilish uchun foydalaniladigan mos yozuvlar oʻzgaruvchisidir. | “Super” bu bevosita supersinf obyektiga murojaat qilish uchun foydalaniladigan mos yozuvlar oʻzgaruvchisidir. |
Namuna oʻzgaruvchisi | |
Joriy sinf misoli oʻzgaruvchisiga shu orqali murojaat qilish mumkin. | Superclass misol oʻzgaruvchisiga super yordamida murojaat qilish mumkin. |
Sinf usuli | |
Mavjud sinf usulini shu orqali chaqirish mumkin. | Superklass usulini super yordamida ishlatish mumkin. |
Konstruktor | |
Joriy sinf konstruktorini this() yordamida chaqirish mumkin. | Superclass konstruktorini super() yordamida chaqirish mumkin. |
Xulosa – bu Java-dagi superga qarshi
Java'da "bu" va "super" kalit so'zlari qo'llaniladi. Kalit so'zlarni o'zgaruvchilar yoki boshqa identifikator nomi sifatida ishlatib bo'lmaydi. Ular bir xil ko'rinadi, lekin ularda farq bor. Bu va super oʻrtasidagi farq shundaki, super mos yozuvlar oʻzgaruvchisi boʻlib, u bevosita supersinf obyektiga murojaat qilish uchun ishlatiladi, bu esa joriy obyektga ishora qiluvchi mos yozuvlar oʻzgaruvchisi.
Buning PDF-faylini Java-da yuklab oling
Siz ushbu maqolaning PDF-versiyasini yuklab olishingiz va iqtibos keltirgan holda oflayn maqsadlarda foydalanishingiz mumkin. Iltimos, PDF versiyasini bu yerdan yuklab oling: Java-dagi bu va super o'rtasidagi farq