JavaRush /Java блогу /Random-KY /Java тилиндеги методдор
articles
Деңгээл

Java тилиндеги методдор

Группада жарыяланган
Java тorндеги методдор - 1Java тorнде колдонмо класстардан турат. Класстар, өз кезегинде, өзгөрмөлөрдөн турат. Алар класстын жүрүм-туруму үчүн жооптуу болгон маалыматтарды жана методдорду сактоо үчүн жооптуу: башкача айтканда, ал бере ала турган логика (мисалы, кээ бир маалыматтарды иштетүү, башка ыкмаларды чакыруу ж.б.). Биз өзгөрмөлөр сыяктуу компоненттер жөнүндө көпкө айта алабыз, бирок биз бүгүн чогулганыбыз үчүн эмес. Метод катары класстын мындай компоненти жөнүндө жакшыраак сүйлөшөлү. Java тorндеги методдор - 2Метод класстын ичинде жарыяланган codeдун аталган блогу. Ал өзүнчө маселени чечүүгө багытталган иш-аракеттердин (көрсөтмөлөрдүн) белгилүү бир толук ырааттуулугун камтыйт, аларды кайра колдонууга болот. Башка сөз менен айтканда, метод бул функция: сиздин классыңыз кыла ала турган нерсе. Башка тилдердин да функциялары бар. Java тorнде гана алар класстардын мүчөлөрү жана 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 тorндеги методдор - 3Java'да төмөнкү кирүү модификаторлору колдонулат:
  • коомдук : коомдук. Бул модификатору бар методдор же талаалар ачык болуп саналат, башка класстарга (же тагыраак айтканда, алардын ыкмалары жана талаалары) учурдагы пакеттен жана тышкы пакеттерден көрүнүп турат. Бул белгилүү жеткorктүүлүктүн эң кеңири деңгээли;

  • корголгон : бул өзгөрткүч менен методдорго же өзгөрмөлөргө учурдагы класстын же топтомдун каалаган жеринен же аны мурастаган класстардан, ошондой эле методдор же талаалар башка пакеттерде болсо дагы, кирүүгө болот

    protected String constructHelloSentence(String name) {...}
  • Демейки өзгөрткүч. Эгерде класс талаасында же методдо өзгөртүүчү жок болсо, демейки өзгөрткүч колдонулат. Бул учурда, талаалар же ыкмалар учурдагы пакеттеги бардык класстарга көрүнүп турат ( коргонгон сыяктуу , бирок мурастоодо көрүнбөйт).

    String constructHelloSentence(String name) {...}
  • жеке : коомдук өзгөртүүчү карама-каршы . Мындай модификатору бар ыкма же өзгөрмө ал жарыяланган класста гана жеткorктүү.

    private String constructHelloSentence(String name) {...}
Андан кийин биз Stringыкма кол тамгасы бар (анын касиеттерин сүрөттөгөн ыкманын биринчи сабы).

Кайтаруу мааниси

Кайтаруу мааниси - бул чалуудан кийин анын ордуна келген маалыматтар (ыкмаларды аткаруунун кээ бир натыйжасы). Ар бир ыкманын кайтаруу мааниси бар. Же жок?

Кайтаруу наркынын ыкмалары

Бул маани берorштердин каалаган түрү болушу мүмкүн: жөнөкөй түрдөгү өзгөрмө же шилтеме түрүндөгү. Бул мисалда биз метод типтеги an objectти кайтарышы керек экенин көрсөтөбүз 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);
}
анда биз компилятордон каргыштарды алабыз, бул анча жакшы эмес (компилятор куру сөздү сунуштаbyte). сОшондой эле кийин маалымат түрү ыкма кол жарыяланган бир дал келиши керек экенин эстен чыгарбоо керек . Бул тууралуу көбүрөөк returnокуңуз .

жараксыз

voidJavaда эмне үчүн колдонулат ? Бардык ыкмалардын кайтаруу мааниси жок. Кээ бирлеринин эч нерсеси жок же эч нерсе кайтаруунун кереги жок. Анда эмне кылуу керек? Андан кийин ыкма кол тамгасына жазабыз 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 тorндеги методдор - 4Методдордун аталыштары кичине тамга менен башталышы керек, бирок төө капты да колдонуш керек (CamelCase, camel case): б.а. Аталышындагы ар бир кийинки сөз мурункуга жанаша болуп, баш тамга менен жазылат. Методдун аталыштары ыкманы сүрөттөшү керек (эң жакшы комментарий бул туура ат коюу). Бул үчүн этиштерди же этиштер менен айкалыштарды колдонуңуз: getCat, delete, createCar, ж.б. Бир класстын ичинде методдун аталыштары уникалдуу болушу керек (методдун ашыкча жүктөлүшүн эсепке албаганда, бул тууралуу биз кийинчерээк сүйлөшөбүз). Келгиле, биз талдап жаткан ыкманы карап көрөлү ( String name)

Методдун параметрлери

Методдор сырттан, тактап айтканда, ыкма чакырылган жерден келе турган белгилүү маалыматтарга ээ болушу мүмкүн (же болбошу мүмкүн). StringБиздин учурда, аталышы бар типтеги an object келгенин көрүп name, кийинчерээк бул өзгөрмөнү методубузда колдонобуз. Методдо чексиз сандагы параметрлерди колдонсоңуз болот, бирок 7ден ашык колдонуу сунушталbyte. Элементтердин так санын билбесек, бирок бул элементтердин баары бир эле максат үчүн керек болуп, бир типте (мисалы, String), эллипс колдонулат:
public void constructHelloSentence(String...name) {
 ...
}
Ар бир элементке кайрылуу мындай болот: name[0] Ал сизге бир нерсени эске салабы? Туура, массив! Биз жазсак эч нерсе өзгөрбөйт:
protected void constructHelloSentence(String[] name) {
 ...
}
Элементтерге кирүү да формада болот: name[1] Жана дагы бир нерсе. Метод аргументтери акыркы болушу мүмкүн :
public String constructHelloSentence(final String name) {
  ...
}
Бул аталыш шилтемеси белгилүү бир an objectке байланып String, аны жокко чыгарууга болбойт дегенди билдирет. Шилтеме өзгөрмөлөр менен иштөө жана алардын сакталган сөздөр менен өз ара аракеттенүүсү тууралуу сиз “ Javaдагы маалымдама маалыматтарынын түрлөрүfinal ” материалынан окуй аласыз .

Чалуу ыкмалары

Ошентип, биз ыкмаларды түзүүнү иреттеп алдык, эми аларды колдонуу жөнүндө сүйлөшөлү. Java ыкмасын кантип чакыруу керек? Java тorндеги методдор - 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
Методдорду канча жолу колдонсок болорун эстен чыгарбоо керек - эч кандай чектөөлөр жок.

бул

thisКоддогу ачкыч сөздү көбүнчө орнотуучулар сыяктуу көрө аласыз :
public void setValue(Long value) {
   this.value = value;
}
Жана ал эмнени билдирет? thisJavaда бул класстын учурдагы an objectисине шилтеме. Мисалы, эгерде биз an object түзсөк:
StringConstructor stringConstructor = new StringConstructor();
анда thisan objectтин ичинде stringConstructorошол эле an objectке шилтеме болот. thisan objectинин өзгөрмөсүнө шилтеме кылуу үчүн да (жогоруда орнотулгандай) жана кандайдыр бир ыкманы чакыруу үчүн колдонулат. Биз классыбызды бир аз кайра жаза алабыз:
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тин ыкмасын чакырабыз. Бирок, эреже катары, бул методдор үчүн дээрлик колдонулbyte, анткени ансыз да берилген an objectтин ыкмасына шилтеме бар, ал негизинен an objectтик өзгөрмө үчүн колдонулат.

Методду ашыкча жүктөө

Бизге негизи бир эле логиканы аткарган метод керек эле дейли, бирок Hello world! анын ордуна worldбиз өзүбүздүн сөзүбүздү (сап) киргизгибиз келет. Бирок бизде мурунтан эле ыкма бар constructHelloSentence. Демек, биз бир эле функцияны аткарган ыкма үчүн жаңы ат менен чыгышыбыз керекпи? Кандай болбосун: бул учурда ашыкча жүктөө бизге жардамга келет. Java тorндеги методдор - 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