this
lan
super
loro tembung kunci khusus ing Jawa sing makili conto saiki saka kelas lan superclass sawijining, mungguh. Programer Java asring mbingungake tembung kasebut lan nuduhake sethithik kesadaran babagan sifat khususe, sing asring ditakoni ing wawancara Java Core. Contone, saperangan saka pitakonan sing langsung teka ing pikiran bab
this
lan
super
, Apa bisa kanggo nemtokake makna beda kanggo tembung kunci
this
ing Jawa? lan apa bedane tembung kunci
this
lan
super
ing basa Jawa. Ora ngerti? Ya, aku ora menehi jawaban ing kene - bisa ditemokake ing pungkasan artikel.
Dadi, kaya sing dakkandhakake ing wiwitan, prabédan utama ing antarane
this
lan
super
ing Jawa yaiku
this
conto kelas sing saiki diwakili, dene
super
conto kelas induk saiki diwakili. Iki minangka salah sawijining conto nggunakake variabel
this
lan
super
- sampeyan bisa uga wis ndeleng conto nelpon konstruktor siji saka liyane, sing diarani. nelpon konstruktor ing chain, iki bisa liwat nggunakake tembung kunci
this
lan
super
. Nang kelas, kanggo nelpon konstruktor ora-argumen sawijining, digunakake
this()
, nalika
super()
digunakake kanggo nelpon konstruktor ora-argumen, utawa kang uga disebut, konstruktor standar saka kelas induk. Miturut cara, kanthi cara iki sampeyan bisa nelpon ora mung konstruktor tanpa bantahan, nanging uga konstruktor liyane dening pass paramèter cocok.
this
Kita bakal weruh conto panggunaan iki enggal
super
. Uga ing
this
Jawa
super
digunakake kanggo ngakses variabel saka conto kelas lan induke. Ing kasunyatan, padha bisa diakses tanpa ater-ater
super
lan
this
, nanging mung yen ing pemblokiran saiki variabel kuwi ora tumpang tindih karo variabel liyane, i.e. yen ora ngemot variabel lokal kanthi jeneng sing padha, yen ora, sampeyan kudu nggunakake jeneng kanthi awalan, nanging iki ora masalah, amarga ing wangun iki malah luwih bisa diwaca. Conto klasik saka pendekatan iki yaiku nggunakake
this
konstruktor ing njero sing njupuk parameter kanthi jeneng sing padha karo variabel conto. Mengko ing artikel kita bakal mangerteni apa beda liyane ana antarane
super
lan
this
, lan katon ing sawetara conto nggunakake.
Carane iki lan super padha
Sadurunge ndeleng prabédan antarane tembung kunci
this
lan
super
, ayo deleng sawetara persamaan:
- Loro-lorone
this
, lan super
variabel non-statis, saengga ora bisa digunakake ing konteks statis, tegese ora bisa digunakake ing metode utama. Iki bakal nyebabake kesalahan wektu kompilasi "variabel non-statis this
ora bisa dirujuk saka konteks statis". Bab sing padha kedadeyan yen sampeyan nggunakake tembung kunci ing metode utama super
.
- Loro-lorone
this
, lan super
bisa digunakake ing konstruktor kanggo nelpon konstruktor liyane ing chain, contone, this
() lan super
() nelpon konstruktor tanpa bantahan saka kelas warisan lan tiyang sepah, mungguh.
Ing conto ing ngisor iki, pisanan kita pass telpon saka konstruktor ora-argumen kelas B kanggo konstruktor saka kelas padha B sing njupuk parameter siji saka jinis
String
, kang siji
super("")
nelpon konstruktor siji-argumen saka superclass.
class A{
A(){
System.out.println("Конструктор без аргументов класса A");
}
A(String args){
System.out.println("Конструктор с одним аргументом класса A");
}
}
class B extends A{
B(){
this("");
System.out.println("Конструктор без аргументов класса B");
}
B(String args){
super("");
System.out.println("Конструктор с одним аргументом класса B");
}
}
public class Test {
public static void main(String args[]) {
B b = new B();
}
}
Output: Konstruktor siji-argumen kelas A Konstruktor siji-argumen kelas B No-argumen konstruktor kelas B
- Nang konstruktor
this
, lan super
kudu katon ing ndhuwur kabeh ekspresi liyane, ing awal banget, yen compiler bakal ngetokake pesen kesalahan. Saka kang nderek sing siji konstruktor ora bisa ngemot loro this()
, lan super()
.
Bedane antarane super lan iki
Saiki kita ngerti carane nggunakake tembung kunci
super
lan
this
ngerti apa sing dibutuhake. Nanging ana pilihan liyane kanggo nggunakake tembung kunci iki sing ora dakkandhakake - ing kelas Inner, sing kanthi bantuan kasebut trep banget kanggo ngrujuk menyang kelas njaba nggunakake formulir notasi Outer.
this
kanggo conto saiki lan Outer.
super
- kanggo wong tuwane. Aja lali ngganti Outer karo jeneng kelas njaba. Saiki ayo dhaptar sedhela bedane utama antarane tembung kunci
this
lan
super
- variabel
this
nuduhake Kayata saiki saka kelas kang digunakake, déné iku super
nuduhake Kayata saiki saka kelas induk.
- Saben konstruktor, yen ora ana telpon eksplisit menyang konstruktor liyane, kanthi implisit nelpon
super()
konstruktor ora ana argumentasi kelas induk, nanging sampeyan tansah duwe pilihan kanthi tegas nelpon konstruktor liyane kanthi salah siji this()
, utawa super()
.
Iki mbokmenawa kabeh sing bisa dikandhakake babagan bedane tembung kunci
this
lan
super
ing Jawa lan carane digunakake ing program. Kaya sing wis dingerteni, tujuan utamane yaiku nelpon siji konstruktor saka liyane lan deleng variabel conto sing diumumake ing kelas saiki lan kelas induke. Aja lali yen iki ora persis variabel biasa, lan saiki - jawaban kanggo pitakonanku, sing aku takon ing paragraf pisanan. Ora, variabel
this
ora bisa diwenehi nilai anyar amarga diumumake final. Sampeyan bisa nyoba kanggo nindakake iki ing IDE - sampeyan bakal nampa kesalahan kompilasi "sampeyan ora bisa nemtokake nilai anyar kanggo variabel
this
- wis ngumumaké final."
Artikel asli kene .
GO TO FULL VERSION