JavaRush /Java блогы /Random-KK /Java тіліндегі әдістер
articles
Деңгей

Java тіліндегі әдістер

Топта жарияланған
Java тіліндегі әдістер – 1Java тілінде қолданба сыныптардан тұрады. Кластар, өз кезегінде, айнымалылардан тұрады. Олар класс әрекетіне жауап беретін деректер мен әдістерді сақтауға жауапты: басқаша айтқанда, ол бере алатын логика (мысалы, кейбір деректерді өңдеу, басқа әдістерді шақыру және т.б.). Біз айнымалылар сияқты құрамдас бөліктер туралы ұзақ уақыт бойы айта аламыз, бірақ біз бүгін жинағанымыз сол емес. Әдіс ретінде сыныптың осындай құрамдас бөлігі туралы жақсырақ сөйлесейік. Java тіліндегі әдістер – 2Әдіс – класс ішінде жарияланған codeтың атаулы блогы. Ол жеке мәселені шешуге бағытталған, қайта пайдалануға болатын әрекеттердің (нұсқаулардың) белгілі бір толық тізбегін қамтиды. Басқаша айтқанда, әдіс - бұл функция: сіздің сынып жасай алатын нәрсе. Басқа тілдердің де функциялары бар. Тек Java тілінде олар сыныптардың мүшелері болып табылады және OOP терминологиясына сәйкес әдістер деп аталады. Бірақ жалғастырмас бұрын, шағын мысалды қарастырайық:
public String constructHelloSentence(String name) {
  String resultSentence = "Hello world! My name is " + name;
  System.out.println(resultSentence);
  return resultSentence;
}
Мұнда күрделі ештеңе жоқ: Java әдісі, оның міндеті - біз оған өтетін атаумен сәлемдесу жолын жасау. Мысалы - Hello world! My name is Bobby Әдіс мәлімдемесіндегі әрбір кілт сөзді (солдан оңға қарай) қарап, әдістің құрылысын дұрыс түсінейік. Біздің бірінші кілт сөзіміз болып табылады publicжәне ол қатынас модификаторын білдіреді:

Қол жеткізу модификаторлары

Олар сынып мүшелері үшін рұқсат етілген көріну көлемін, яғни айнымалыны немесе әдісті қолдануға рұқсат етілген орындарды шектеуді көрсетеді. Java тіліндегі әдістер – 3Java тілінде келесі қатынас модификаторлары қолданылады:
  • қоғамдық : қоғамдық. Осы модификаторы бар әдістер немесе өрістер жалпыға ортақ, басқа сыныптарға (дәлірек айтқанда, олардың әдістері мен өрістеріне) ағымдағы бумадан және сыртқы бумалардан көрінеді. Бұл белгілі қол жеткізудің ең кең деңгейі;

  • қорғалған : осы модификаторы бар әдістерге немесе айнымалы мәндерге ағымдағы сыныптың немесе буманың кез келген жерінен немесе осы сыныпты иеленетін сыныптарда, сондай-ақ әдістер немесе өрістер, тіпті олар басқа пакеттерде болса да қол жеткізуге болады.

    protected String constructHelloSentence(String name) {...}
  • Әдепкі модификатор. Егер сынып өрісінде немесе әдісінде модификатор болмаса, әдепкі модификатор қолданылады. Бұл жағдайда өрістер немесе әдістер ағымдағы бумадағы барлық сыныптарға көрінеді (мысалы, protected , бірақ мұра алу кезінде көрінбейді).

    String constructHelloSentence(String name) {...}
  • private : public модификаторына қарама-қарсы . Осындай модификаторы бар әдіс немесе айнымалы ол жарияланған сыныпта ғана қол жетімді.

    private String constructHelloSentence(String name) {...}
Әрі қарай әдіс қолтаңбасы бар String(оның қасиеттерін сипаттайтын әдістің бірінші жолы).

Қайтарылатын мән

Қайтару мәні - бұл қоңыраудан кейін орнына келетін деректер (әдістің орындалуының кейбір нәтижесі). Әрбір әдістің қайтару мәні бар. Немесе жоқ?

Қайтару мәнінің әдістері

Бұл мән деректердің кез келген түрі болуы мүмкін: қарапайым түрдегі айнымалы немесе сілтеме түрі. Бұл мысалда әдіс түрдегі нысанды қайтаруы керек екенін көрсетеміз String, ол, есімізде, жолды сипаттайтын класс. Мұндағы екінші нүкте – сөз return. Оның қайтарылатын мәнге тікелей қатысы бар: одан кейінгі мән әдіс шақырылған жерге қайта жіберіледі, содан кейін әдістің өзі жабылады return. Бұл сөз әдетте әдістің соңғы жолында пайда болады ( if, else... сияқты әртүрлі тармақтары бар әдістерден басқа). Келесі жолға codeты келесі жолға жазсаңыз return:
private String constructHelloSentence(String name) {
  String resultSentence = "Hello world! My name is " + name;
  return resultSentence;
  System.out.println(resultSentence);
}
онда біз компилятордан қарғыс аламыз, бұл өте жақсы емес (компилятор бос сөзді ұсынбайды). сСондай-ақ, кейінгі деректер түрі әдіс қолтаңбасында жарияланғанға сәйкес келуі керек екенін есте сақтау қажет . Бұл туралы толығырақ мына жерденreturn оқыңыз .

жарамсыз

voidОл Java тілінде не үшін қолданылады ? Барлық әдістерде қайтару мәні болмайды. Кейбіреулерінде ештеңе жоқ немесе ештеңені қайтарудың қажеті жоқ. Сонда не істеу керек? Содан кейін әдіс қолтаңбасында жазамыз void. Қайтару мәні болмаса, әдісіміз қандай болады?
protected void constructHelloSentence(String name) {
  String resultSentence = "Hello world! My name is " + name;
  System.out.println(resultSentence);
}
Сіз қайтару мәнімен бірге returnSo it is сөзі де жоғалып кеткенін байқаған боларсыз, өйткені біздің әдіс ештеңені қайтармауы керек. Дегенмен, оны осында орналастыруға болады, бірақ ешқандай мағынасы жоқ, жай ғана return; соңғы жолда. Бұл әдетте пайдасыз, сондықтан voidәдістерде бұл міндетті емес. voidДегенмен, оны әдістен дереу шыққыңыз келетін тармақтар немесе циклдар сияқты әдістерде пайдалы түрде қолдануға болады . Келесі әдіс декларациясында бізде болды constructHelloSentence.

Әдіс атаулары

constructHelloSentence - әдістің атауы, сол немесе басқа әдісті ажырата алатын ерекше белгі. Және, тиісінше, бір немесе басқа әдісті шақырыңыз. Java тіліндегі әдістер – 4Әдіс атаулары кіші әріптен басталуы керек, сонымен қатар түйе қаптамасын (CamelCase, түйе корпусын) пайдалану керек: яғни. Атаудағы әрбір келесі сөз алдыңғы сөзге іргелес және бас әріппен жазылады. Әдіс атаулары әдісті сипаттауы керек (ең жақсы түсініктеме - дұрыс атау). Ол үшін етістіктерді немесе етістіктермен тіркестерді қолданыңыз: getCat, delete, createCar, т.б. Бір сыныпта әдіс атаулары бірегей болуы керек (әдістің шамадан тыс жүктелуін есептемегенде, ол туралы кейінірек айтатын боламыз). Біз талдап жатқан әдісті әрі қарай қарастырайық және көрейік ( String name)

Әдіс параметрлері

Әдістерде сырттан, атап айтқанда әдіс шақырылған жерден келетін белгілі бір деректер болуы мүмкін (немесе болмауы мүмкін). StringБіздің жағдайда, аты бар типтік нысан келгенін көреміз nameжәне кейінірек бұл айнымалыны әдісімізде қолданамыз. Әдісте параметрлердің шектеусіз санын пайдалануға болады, бірақ 7-ден артық ұсынылмайды. Элементтердің нақты санын білмейміз, бірақ бұл элементтердің барлығы бір мақсат үшін қажет және бір типте болатын болса (мысалы, String), эллипс қолданылады:
public void constructHelloSentence(String...name) {
 ...
}
Әрбір элементтің тартымдылығы келесідей болады: name[0] ол сізге бірдеңені еске салады ма? Дұрыс, массив! Жазсақ ештеңе өзгермейді:
protected void constructHelloSentence(String[] name) {
 ...
}
Элементтерге қол жеткізу келесідей болады: name[1] Және тағы бір нәрсе. Әдіс аргументтері түпкілікті болуы мүмкін :
public String constructHelloSentence(final String name) {
  ...
}
Бұл атау сілтемесі белгілі бір нысанға байланысты Stringжәне оны қайта анықтау мүмкін емес дегенді білдіреді. Анықтамалық айнымалылармен жұмыс және олардың сақталған сөздермен әрекеттесуі туралы « Java тіліндегі анықтамалық деректер түрлеріfinal » материалынан оқи аласыз .

Шақыру әдістері

Сонымен, біз әдістерді құруды сұрыптадық, енді оларды пайдалану туралы сөйлесейік. Java-де әдісті қалай шақыруға болады? Java тіліндегі әдістер – 5Java тіліндегі әрбір әдіс сыныпта болады. Java тілінде қоңырау шалу әдістерінің қалай жұмыс істейтінін түсіну үшін келесі сыныпты алайық:
public class StringConstructor {
  public String constructHelloSentence(String name) {
     String resultSentence = "Hello world! My name is " + name;
     System.out.println(resultSentence);
     return resultSentence;
  }
}
Біздің әдіс статикалық емес болғандықтан (бұл бүгінгі мақаланың шеңберінен шығатын бөлек талқылау тақырыбы), оны шақыру үшін алдымен an object жасап, содан кейін ондағы әдісті шақыру керек:
class Application{
  public static void main(String[] args) {
     StringConstructor stringConstructor = new StringConstructor();
     stringConstructor.constructHelloSentence("Den");
  }
}
Біздің әдісіміздің аргументтерінде біз экранда көрсетілген нәтиже жолында көргіміз келетін жолды (атауды) өткіздік:

Hello world! My name is Den
Сондай-ақ, әдістерді қанша рет қажет болса, сонша рет қолдануға болатынын есте ұстаған жөн - ешқандай шектеулер жоқ.

бұл

Сіз codeта кілт сөзді жиі көре аласыз this, мысалы, орнатушылар:
public void setValue(Long value) {
   this.value = value;
}
Және бұл нені білдіреді? thisJava-да бұл осы сыныптың ағымдағы нысанына сілтеме. Мысалы, егер біз an object жасасақ:
StringConstructor stringConstructor = new StringConstructor();
содан кейін thisan objectінің ішінде stringConstructorсол нысанға сілтеме болады. thisнысан айнымалысына сілтеме жасау үшін де (жоғарыдағы орнатушыдағыдай) және қандай да бір әдісті шақыру үшін қолданылады. Біз сыныбымызды аздап қайта жаза аламыз:
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 ";
  }
}
Арқылы thisқажетті жолды алу үшін осы нысанның әдісін шақырамыз. Бірақ бәрібір, әдетте, бұл әдістер үшін қолданылмайды, өйткені онсыз да берілген нысанның әдісіне сілтеме бар; ол негізінен an objectінің айнымалысы үшін қолданылады.

Әдістің шамадан тыс жүктелуі

Бізге бірдей логиканы орындайтын әдіс қажет болды делік, бірақ Hello world! оның орнына worldөз сөзімізді (жолды) енгізгіміз келеді. Бірақ бізде қазірдің өзінде әдіс бар constructHelloSentence. Сонымен, бірдей функционалдылықты орындайтын әдіс үшін жаңа атауды ойлап табу керек пе? Қалай болғанда да: дәл осы сәтте шамадан тыс жүктеме бізге көмекке келеді. Java тіліндегі әдістер – 7Әдістің шамадан тыс жүктелуі – бір әдіс атауын оны сыныпта жариялау кезінде бірнеше рет пайдалану. Тіл синтаксисі тұрғысынан кейбір жергілікті кеңістікте екі бірдей атау болуы мүмкін емес. Бірақ сонымен қатар атаулары бірдей, бірақ аргументтері әртүрлі әдістерді жариялауға болады. Басқаша айтқанда, атаулары бірдей, бірақ кіріс деректері әртүрлі екі немесе одан да көп әдістер болған кезде сыныпта шамадан тыс жүктемелер болады:
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;
  }
}
Мұнда біз әдістерде бірдей қатынас модификаторы (сондай-ақ қайтару түрі) болуы міндетті емес екенін көреміз. Егер шамадан тыс жүктелген әдіс шақырылса, онда бірнеше жарияланған әдістердің ішінен компилятор автоматты түрде шақыру кезінде көрсетілген параметрлердің негізінде қажеттіні анықтайды.
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION