JavaRush /Java Blog /Random-TK /Java usullary
articles
Dereje

Java usullary

Toparda çap edildi
Java-da usullar - 1Java-da bir programma sapaklardan durýar. Sapaklar hem öz gezeginde üýtgeýänlerden durýar. Synpyň özüni alyp barşyna jogap berýän maglumatlary we usullary saklamak üçin jogapkärdirler: başgaça aýdylanda, berip biljek logika (mysal üçin, käbir maglumatlary gaýtadan işlemek, başga usullary çagyrmak we ş.m.). Üýtgeýjiler ýaly komponentler hakda uzak wagtlap gürleşip bileris, ýöne şu gün ýygnananymyz däl. Usul hökmünde synpyň şeýle bölegi barada has gowy gürleşeliň. Java-da usullar - 2Usul, synpyň içinde yglan edilen kodlar toplumydyr. Onda gaýtadan ulanyp boljak aýratyn meseläni çözmäge gönükdirilen hereketleriň (görkezmeleriň) doly yzygiderliligi bar. Başgaça aýdylanda, usul bir funksiýa: synpyňyzyň edip biljek zady. Beýleki dilleriň hem wezipeleri bar. Diňe Java-da synplaryň agzalary bolup, OOP terminologiýasyna görä usul diýilýär. Emma dowam etmezden ozal kiçijik bir meselä seredeliň:
public String constructHelloSentence(String name) {
  String resultSentence = "Hello world! My name is " + name;
  System.out.println(resultSentence);
  return resultSentence;
}
Bu ýerde çylşyrymly zat ýok: wezipesi, oňa geçýän adymyz bilen gutlag setirini döretmek. Mysal üçin - Hello world! My name is Bobby Usul beýannamasyndaky her açar söze (çepden saga) seredip, usulyň gurluşyna dogry düşüneliň. Ilkinji açar sözümiz public, giriş üýtgeýjisini aňladýar:

Üýtgeýjilere giriň

Synp agzalary üçin görlüp-eşidilmedik çäkleri, ýagny üýtgeýjiniň ýa-da usulyň ulanylmagyna rugsat berilýän ýerleriň çäklendirilmegini görkezýärler. Java-da usullar - 3Java-da aşakdaky giriş üýtgedijileri ulanylýar:
  • köpçülik : köpçülik. Bu üýtgediji bilen usullar ýa-da meýdanlar, häzirki paketden we daşarky paketlerden beýleki synplara (has dogrusy, olaryň usullary we meýdanlary) görünýär. Bu bilinýän iň giň derejedir;

  • goragly : bu üýtgediji bilen usullara ýa-da üýtgeýjilere häzirki synpyň ýa-da paketiň islendik ýerinden ýa-da miras galan synplarda, beýleki paketlerde bolsa-da usullar ýa-da meýdanlara girip bolýar.

    protected String constructHelloSentence(String name) {...}
  • Bellenen üýtgediji. Synp meýdany ýa-da usuly üýtgediji ýok bolsa, deslapky üýtgediji ulanylýar. Bu ýagdaýda meýdanlar ýa-da usullar häzirki paketdäki ähli synplara görünýär ( goralýan ýaly , ýöne miras alanda görünmeýär).

    String constructHelloSentence(String name) {...}
  • hususy : köpçülikleýin üýtgedijiniň tersi . Şeýle üýtgediji bilen usul ýa-da üýtgeýji diňe yglan edilen synpda bolýar.

    private String constructHelloSentence(String name) {...}
Ondan soň usuly golumyz bar String(häsiýetlerini beýan edýän usulyň birinji setiri).

Yza gaýtaryş bahasy

Yza gaýtaryş gymmaty, jaňdan soň öz ýerine gelýän maglumatlardyr (usuly ýerine ýetirmegiň käbir netijesi). Her usulyň yzyna gaýtaryş gymmaty bar. Ýa-da ýok?

Gaýtadan baha usullary

Bu baha maglumatlaryň islendik görnüşi bolup biler: ýönekeý görnüşiň üýtgeýjisi ýa-da salgylanma görnüşi. StringBu mysalda, usulyň ýadyma düşýän ýaly bir setiri suratlandyrýan synp görnüşindäki obýekti yzyna gaýtarmalydygyny görkezýäris . Bu ýerde ikinji nokat return. Yza gaýtaryş bahasy bilen gönüden-göni baglanyşygy bar: ondan soň baha, usulyň çagyrylan ýerine iberiler we usulyň özi ýapylar return. Bu söz, adatça usulyň soňky setirinde ýüze çykýar (ýaly dürli şahalary bolan usullardan başga if, else..). Kody indiki setirde ýazsaňyz return:
private String constructHelloSentence(String name) {
  String resultSentence = "Hello world! My name is " + name;
  return resultSentence;
  System.out.println(resultSentence);
}
soň düzüjiden nälet alarys, bu gaty gowy däl (düzüji manysyz maslahat bermez). Şeýle hem, maglumatlaryň görnüşiniň сusul golunda yglan edilenine gabat gelmelidigini ýadyňyzdan çykarmaly dälsiňiz. Bu hakda has giňişleýin returnokaň .

boş

Java-da näme üçin ulanylýar void? Methodshli usullaryň yzyna gaýtaryş gymmaty ýok. Käbirleriniň hiç zady ýok ýa-da hiç zady yzyna gaýtarmak zerurlygy ýok. Onda näme etmeli? Soňra usul golunda ýazýarys void. Yzymyz gymmaty bolmasa usulymyz nähili bolardy?
protected void constructHelloSentence(String name) {
  String resultSentence = "Hello world! My name is " + name;
  System.out.println(resultSentence);
}
Belki, yzyna gaýtaryş gymmaty bilen birlikde, sözüň returnýitip gidendigini gören bolsaňyz gerek, sebäbi usulymyz hiç zady yzyna gaýtarmaly däldir. Muňa garamazdan, bu ýere ýerleşdirilip bilner, ýöne manysy ýok, diňe return; soňky setirde. Bu, umuman peýdasyz, şonuň üçin voidusullar bilen islege bagly däl. voidŞeýle-de bolsa, usuldan derrew çykmak isleýän ýeriňizde şahalar ýa-da aýlawlar ýaly usullarda peýdaly ulanylyp bilner . Indiki usul deklarasiýasynda constructHelloSentence.

Usul atlary

constructHelloSentence - usulyň ady, bir ýa-da başga usuly tapawutlandyryp bilýän tapawutly aýratynlyk. Şoňa laýyklykda bir ýa-da başga bir usula jaň ediň. Java-da usullar - 4Usul atlary kiçi harp bilen başlamaly, şeýle hem düýäniň gapagyny ulanmaly (CamelCase, düýe gapagy): Adyndaky her indiki söz öňki söz bilen ýanaşyk we baş harp bilen ýazylýar. Usul atlary usuly suratlandyrmalydyr (iň gowy teswir dogry atlandyrmakdyr). Munuň üçin işlikleri ýa-da işlikler bilen kombinasiýalary ulanyň: ,,, getCatwe ş.m. Bir synpyň içinde usul atlary özboluşly bolmaly (biraz soňrak gürleşeris, artykmaç ýüklemäni hasaplamaz). Derňeýän usulymyza has giňişleýin seredeliň we ( ) deletecreateCarString name

Usul parametrleri

Usullar daşardan, ýagny usulyň çagyrylan ýerinden belli bir maglumatlary alyp biler (ýa-da bolmazlygy). StringBiziň ýagdaýymyzda, ady bolan bir görnüşli obýektiň gelýändigini görýäris namewe soňra bu üýtgeýjini usulymyzda ulanýarys. Bir usulda çäklendirilmedik mukdarda parametr ulanyp bilersiňiz, ýöne 7-den gowrak maslahat berilmeýär. Elementleriň takyk sanyny bilemzok, ýöne bu elementleriň hemmesi bir maksat üçin zerur we şol bir görnüşde bolar (mysal üçin String), ellips ulanylýar:
public void constructHelloSentence(String...name) {
 ...
}
Her elemente ýüzlenme şeýle bolar: name[0] size bir zady ýatladýarmy? Dogry, tertip! Writeazsak hiç zat üýtgemez:
protected void constructHelloSentence(String[] name) {
 ...
}
Elementlere giriş hem görnüşde bolar: name[1] moreene bir zat. Usul argumentleri gutarnykly bolup biler :
public String constructHelloSentence(final String name) {
  ...
}
Bu, adyň salgylanmasynyň belli bir obýekte baglydygyny Stringwe ýok edilip bilinmejekdigini aňladýar. Salgy üýtgeýjileri bilen işlemek we olaryň “ Java-da maglumat maglumatlarynyň görnüşlerifinal ” materialynda ätiýaçlandyrylan sözler bilen gatnaşygy hakda okap bilersiňiz .

Çagyryş usullary

Şeýlelik bilen, usullaryň döredilmegini kesgitledik, indi olary ulanmak barada gürleşeliň. Java-da usuly nädip çagyrmaly? Java-da usullar - 5Java-da her usul bir synpda. Java-da jaň etmegiň usullarynyň nähili işleýändigine düşünmek üçin bir synp alalyň:
public class StringConstructor {
  public String constructHelloSentence(String name) {
     String resultSentence = "Hello world! My name is " + name;
     System.out.println(resultSentence);
     return resultSentence;
  }
}
Usulymyz statik dälligi sebäpli (bu, şu günki makalanyň çäginden çykýan ara alyp maslahatlaşmak üçin aýratyn mowzuk), oňa jaň etmek üçin ilki bilen bir obýekt döretmeli, soň bolsa usuly çagyrmaly:
class Application{
  public static void main(String[] args) {
     StringConstructor stringConstructor = new StringConstructor();
     stringConstructor.constructHelloSentence("Den");
  }
}
Usulymyzyň argumentlerinde ekranda görkezilen netijede görmek isleýän setirimizi (adymyzy) geçirdik:

Hello world! My name is Den
Usullary näçe gezek ulanyp boljakdygyny ýatdan çykarmaly däldiris - çäklendirmeler ýok.

Bu

thisAçar sözi sazlaýjylarda bolşy ýaly kodda köplenç görüp bilersiňiz :
public void setValue(Long value) {
   this.value = value;
}
Munuň manysy näme? thisJava-da bu synpyň häzirki obýektine salgylanma. Mysal üçin, bir obýekt döreden bolsak:
StringConstructor stringConstructor = new StringConstructor();
soň thisobýektiň içinde stringConstructorşol bir obýekte baglanyşyk bolar. thisobýekt üýtgeýjisine (ýokardaky sazlaýjydaky ýaly) we haýsydyr bir usula jaň etmek üçin ulanylýar. Synpymyzy azajyk täzeden ýazyp bileris:
public class StringConstructor {

  public String constructHelloSentence(String name) {
     String resultSentence = this.getSentence()  + name;
     System.out.println(resultSentence);
     return resultSentence;
  }

  private String getSentence() {
     return "Hello world! My name is ";
  }
}
thisGerekli setiri almak üçin bu obýektiň usulyna jaň edýäris . Stillöne şonda-da, adatça, bu usullar üçin ulanylmaýar diýen ýaly, sebäbi onsuzam berlen obýektiň usulyna salgylanma bar, esasan obýekt üýtgeýän üçin ulanylýar.

Usul artykmaç ýüklemek

Aslynda şol bir logikany ýerine ýetirýän bir usul gerek diýeliň, ýöne a Hello world! munuň ýerine worldöz sözümizi (setir) goýmak isleýäris. Emma eýýäm bir usulymyz bar constructHelloSentence. Şeýlelik bilen, şol bir funksiýany ýerine ýetirýän usul üçin täze bir at tapmalymy? Nähili bolandygyna garamazdan: häzirki wagtda artykmaç ýüklemek usuly bize kömek edýär. Java-da usullar - 7Usul artykmaç ýüklemek, synpda yglan edilende şol bir usulyň adyny bir gezekden köp ulanmakdyr. Dil sintaksisiniň nukdaýnazaryndan käbir ýerli giňişlikde iki meňzeş at bolup bilmez. Emma usullary şol bir atlar bilen, ýöne dürli argumentler bilen yglan etmek hem mümkin. Başgaça aýdylanda, bir atda, ýöne dürli giriş maglumatlary bolan iki ýa-da has köp usul bar bolsa, synpda artykmaç ýükler bar:
public class Constructor {

  public String constructHelloSentence(String name) {
     String resultSentence = "Hello world! My name is " + name;
     System.out.println(resultSentence);
     return resultSentence;
  }

  protected String constructHelloSentence(String firstName, String secondName) {
     String resultSentence = "Hello " + firstName + "! My name is " + secondName;
     System.out.println(resultSentence);
     return resultSentence;
  }
}
Bu ýerde usullaryň birmeňzeş giriş üýtgeýjisiniň (şeýle hem gaýdyp beriş görnüşi) bolmaly däldigini görýäris. Artykmaç usul diýilse, yglan edilen birnäçe usuldan düzüji jaň wagtynda görkezilen parametrlere esaslanyp zerur usuly awtomatiki kesgitleýär.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION