Ing JavaRush, para siswa diwenehi tembung kunci kanthi harfiah saka kuliah pisanan
lan dadi metu sing mung nemtokake nilai kanggo variabel
Yaiku,
Lan ing ngisor iki kode program kanthi tembung kunci
this
. Lan liwat wektu dadi cetha apa tegese. Nanging akeh, looking bali, mbokmenawa bakal sajujure ngomong dhewe sing kanggo dangu padha ora bisa éling zen saka tembung kunci iki. Ing artikel iki, kita ngangkat tutup rahasia babagan nggunakake tembung kunci this
kanggo wong-wong sing isih durung ngerti ... Sugeng rawuh! Yen sampeyan njupuk buku referensi Jawa Schildt , ing kaca 171 sampeyan bakal maca tembung kunci sing this
dibutuhake supaya metode bisa ngrujuk obyek sing diarani. Iki bisa dadi pungkasane. Nanging kita butuh spesifik. Minangka aturan, this
kudu digunakake ing rong kasus:
- Nalika variabel conto kelas lan variabel metode / konstruktor duwe jeneng sing padha;
- Nalika sampeyan kudu nelpon konstruktor saka siji jinis (contone, standar utawa konstruktor parameterized) saka liyane. Iki uga disebut telpon konstruktor eksplisit.
Conto siji - variabel conto lan variabel metode duwe jeneng sing padha
Ayo kita duwe kelasHuman
sing kolom "jeneng" ditetepake: Ayo name
nggawe setter kanggo variabel (setter cukup bisa digunakake lan ora ana trick ing kene): Elinga yen kita ngliwati variabel menyang metode (setter). ) . Kita ngenalake variabel anyar lan (umum) bisa diarani apa wae sing dikarepake amarga mung katon ing {kurung kriting} metode kasebut . Elinga yen ana siji baris ing setter: setName
String newName
setName
name = newName;
Yaiku, nyatane, kita ngenalake variabel anyar newName
lan ditugasake menyang variabel sing wis ana ing kelas kasebut name
. Akeh programer ngira aneh kanggo ngenalake variabel kanthi jeneng anyar yen ing pungkasan kita ngomong babagan perkara sing padha. Babagan jeneng ing kelas Human
. Mula, para pangembang basa mikir supaya trep nggunakake siji jeneng variabel. Ing tembung liyane, kok duwe rong jeneng kanggo variabel sing tegese padha. Yaiku, aku pengin nindakake kaya iki: Nanging ing kasus iki ana masalah . Saiki kita duwe rong variabel sing jenenge padha. Siji String name
kalebu kelas Human
, lan liyane String name
kanggo metode setName
. Mulane, mesin Java ora ngerti variabel sing sampeyan maksud nalika nulis string ing setter:
name = name;
Jawa njupuk sing paling cedhak - name
saka cara setName
:
name
saka cara iki, kanggo. Sing mesthi wae ora ana gunane. Mulane, sawetara cara dibutuhake kanggo mbedakake variabel name
saka kelas Human
saka variabel name
saka metode.Kanggo setName
ngatasi masalah iki, tembung kunci dienalake this
, sing ing kasus iki bakal nuduhake yen perlu nelpon variabel dudu metode, nanging saka kelas Human
:
this
bakal ngrujuk menyang obyek sing nelpon, kaya sing dikandhakake ing wiwitan artikel. Akibaté, jeneng wong setName
bakal disetel liwat setter kanggo obyek digawe. Ing ngisor iki kode tanpa nggunakake tembung kunci this
. Kode kasebut nggawe obyek kelas Human
lan menehi jeneng:
this
:
public class Solution{
public static void main(String[] args) {
Human human1 = new Human();
human1.setName("Volodya");
human1.print();
}
}
class Human{
String name;
public String getName() {
return name;
}
public void setName(String name){
this.name = name;
}
void print(){
System.out.println(name);
}
}
Mangkono, iku this
ngindhari ngenalaken variabel anyar kanggo ndudohke bab sing padha, kang ndadekake kode kurang "overloaded" karo variabel tambahan.
Conto Loro - Nggunakake iki kanthi tegas nelpon konstruktor
Nelpon siji konstruktor saka liyane bisa migunani nalika sampeyan (cukup aneh) duwe sawetara konstruktor lan sampeyan ora pengin nulis ulang kode initialization diwenehi sadurungé ing konstruktor ing konstruktor anyar. Bingung? Kabeh iku ora medeni minangka misale jek. Deleng kode ing ngisor iki, ana rong konstruktor kelasHuman
:
class Human{
int age;
int weight;
int height;
Human(int age, int weight){
this.age = age;
this.weight = weight;
}
Human(int age, int weight, int height){
//you call the constructor with two parameters
this(age, weight);
//and add the missing variable
this.height = height;
}
}
Ing kene kita duwe konstruktor loro-parameter sing nampa int age
lan int weight
. Ayo kita nulis rong baris kode ing kono:
this.age = age;
this.weight = weight;
banjur padha mutusaké kanggo nambah konstruktor liyane, karo telung paramèter, kang, saliyane kanggo umur lan bobot, uga njupuk dhuwur. Ing konstruktor anyar sampeyan bisa nulis iki:
this.age = age;
this.weight = weight;
this.height = height;
Nanging tinimbang mbaleni kode sing wis ditulis ing konstruktor iki, sampeyan bisa nggunakake tembung kunci kanggo this
nelpon konstruktor kanthi rong paramèter:
this(age, weight);
// and add the missing variable:
this.height = height;
Dadi, sampeyan ngandhani konstruktor kanthi telung paramèter:
- nelpon konstruktor iki, kang wis loro paramèter.
- lan nambah variabel sing ilang.
this
diterusake menyang kabeh metode kajaba sing statis (mula kenapa this
asring diarani parameter implisit) lan bisa digunakake kanggo ngrujuk menyang obyek sing diarani metode kasebut. Ora perlu wedi karo tembung kunci iki, amarga This
ora medeni.
GO TO FULL VERSION