JavaRush-da talyplar ilkinji leksiýalardan göni manyda açar söz bilen tanyşýarlar
.Agny,
Aşakda açar söz bilen programma kody
this
. Wagtyň geçmegi bilen munuň manysy belli bolýar. Emma köpler yza gaýdyp seredip, uzak wagtlap bu möhüm sözüň manysyna düşünip bilmejekdiklerini aç-açan aýdarlar. Bu makalada this
henizem düşünip bilmeýänler üçin açar sözleri ulanmak baradaky syrlaryň perdesini aýyrýarys ... Hoş geldiňiz! Schildt-iň Java salgylanma kitabyny alsaňyz , 171-nji sahypada this
usulyň atlandyrylan obýekte salgylanmagy üçin açar sözüň zerurdygyny okarsyňyz . Aslynda munuň soňy bolup biler. Emma bize aýratynlyklar gerek. Düzgün bolşy ýaly, iki ýagdaýdathis
ulanylmaly :
- Haçan-da synp mysaly üýtgeýjisi we usul / konstruktor üýtgeýjisi birmeňzeş bolsa;
- Haçan-da bir görnüşdäki konstruktory (mysal üçin, deslapky ýa-da parametrli konstruktor) çagyrmaly. Muňa aç-açan konstruktor jaňy hem diýilýär.
Mysal üçin - mysal üýtgeýjisi we usul üýtgeýjisiniň birmeňzeş ady bar
Human
"Ady" meýdany kesgitlenýän synpymyz bar diýeliň : Üýtgeýji üçin sazlaýjy döredeliň (sazlaýjy gaty işleýär we bu ýerde hiç hili mekirlik ýok): Üýtgeýjini usuly (setter) geçirýändigimize üns bermegiňizi haýyş edýäris. ) . Täze üýtgeýjini hödürledik we (umuman) islän zadymyza jaň edip bileris, sebäbi bu usulyň diňe “egri ýaýlary” içinde görüner . Sazlaýjyda bir setiriň bardygyna üns beriň: name
setName
String newName
setName
name = newName;
.Agny, aslynda täze üýtgeýjini hödürledik newName
we synpda eýýäm bar bolan üýtgeýjä belledik name
. Köp programmist, ahyrynda şol bir zat hakda gürleşýän bolsak, täze at bilen üýtgeýjini girizmegi geň hasapladylar. Synpdaky at hakda Human
. Şonuň üçin dil döredijiler bir üýtgeýän ady ulanmagy amatly etmek barada pikir etdiler. Başgaça aýdylanda, bir zady aňladýan üýtgeýjiniň näme üçin iki ady bar? Thisagny, men şuňa meňzeş bir zat etmek isleýärin: thisöne bu ýagdaýda bir mesele ýüze çykýar . Indi birmeňzeş atlandyrylýan iki üýtgeýjimiz bar. Biri String name
synpa Human
, beýlekisi String name
usulyna degişlidir setName
. Şonuň üçin Java enjamy setterde setir ýazanyňyzda haýsy üýtgeýjini göz öňünde tutýandygyňyzy bilmeýär:
name = name;
Java iň ýakyn birini alýar - name
usuldan setName
:
name
we bu usuldan üýtgeýjä diňe bir baha belländigiňiz ýüze çykýar . Elbetde manysy ýok. Şonuň üçin üýtgeýjini name
synpdan Human
üýtgeýjini name
usuldan tapawutlandyrmak üçin haýsydyr bir usul gerekdi setName
. Bu meseläni çözmek üçin açar söz girizildi this
, bu ýagdaýda üýtgeýjini usulyň däl-de, çagyrmagyň zerurdygyny görkezer; synpyň Human
:
this
makalanyň başynda aýdylyşy ýaly çagyryş obýektine degişlidir. Netijede, adamyň ady setName
sazlaýjynyň üsti bilen döredilen obýekte ýazylar. Aşakda açar söz ulanman kod bar this
. Kod synp obýektini döredýär Human
we oňa at berýär:
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);
}
}
Şeýlelik bilen, this
şol bir zady aňlatmak üçin täze üýtgeýjileri girizmekden gaça durýar, bu bolsa goşmaça üýtgeýjiler bilen kody az “ýükleýär”.
Ikinji mysal - Konstruktory aç-açan çagyrmak üçin muny ulanmak
Bir konstruktory başga birine çagyrmak, birnäçe konstruktoryňyz bar bolsa we konstruktorda ozal berlen başlangyç kody täze konstruktorda täzeden ýazmak islemeseňiz peýdaly bolup biler. Bulaşdyňyzmy? Hemme zat görünişi ýaly gorkunç däl. Aşakdaky koda serediň, onuň iki synp konstruktory barHuman
:
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;
}
}
int age
Bu ýerde ilki bilen kabul edýän we iki parametrli konstruktor bar int weight
. Onda iki setir kod ýazdyk diýeliň:
this.age = age;
this.weight = weight;
soň bolsa ýaş we agramdan başga-da beýikligi talap edýän üç parametrli başga bir konstruktor goşmak kararyna geldiler. Täze konstruktorda muny ýazyp bilersiňiz:
this.age = age;
this.weight = weight;
this.height = height;
this
Thisöne bu konstruktorda eýýäm ýazan koduňyzy gaýtalamagyň ýerine, iki parametrli konstruktory aç-açan çagyrmak üçin açar söz ulanyp bilersiňiz :
this(age, weight);
// and add the missing variable:
this.height = height;
Şonuň üçin konstruktora üç parametr bilen aýdýarsyňyz:
- iki parametri bolan bu konstruktora jaň ediň.
- we ýiten üýtgeýjini goşuň.
this
statiki usullardan başga ähli usullara geçirilýär (şonuň üçin this
köplenç aç-açan parametr diýilýär) we bu usul diýilýän obýekte degişlilikde ulanylyp bilner. Bu açar sözden gorkmagyň hajaty ýok, sebäbi This
gorkunç däl.
GO TO FULL VERSION