Рубрики
Без рубрики

Методы в Java

Узнайте все о методах в Java, от базового синтаксиса метода до перегрузки, а также о том, как вызывать методы.

Автор оригинала: Antonio Manuel Moreno Delgado.

1. введение

В Java методы – это то, где мы определяем бизнес-логику приложения. Они определяют взаимодействие между данными, заключенными в объекте.

В этом уроке мы рассмотрим синтаксис методов Java, определение сигнатуры метода, а также то, как вызывать и перегружать методы .

2. Синтаксис метода

Во-первых, метод состоит из шести частей:

  • Модификатор доступа: дополнительно мы можем указать, из какого кода можно получить доступ к методу
  • Тип возвращаемого значения: тип значения, возвращаемого методом, если таковой имеется
  • Идентификатор метода: имя, которое мы даем методу
  • Список параметров: необязательный разделенный запятыми список входных данных для метода
  • Список исключений: необязательный список исключений, которые может выдавать метод
  • Тело: определение логики (может быть пустым)

Давайте рассмотрим пример:

Давайте подробнее рассмотрим каждую из этих шести частей метода Java.

2.1. Модификатор доступа

Модификатор access позволяет нам указать, какие объекты могут иметь доступ к методу. Существует четыре возможных модификатора доступа: public, protected, private и default (также называемый package-private ).

Метод также может включать ключевое слово static | до или после модификатора доступа. Это означает, что метод принадлежит классу, а не экземплярам, и поэтому мы можем вызвать метод, не создавая экземпляр класса. Методы без ключевого слова static известны как методы экземпляра и могут вызываться только на экземпляре класса.

Что касается производительности, статический метод будет загружен в память только один раз – во время загрузки класса – и, таким образом, более эффективен с точки зрения памяти.

2.2. Тип возврата

Методы могут возвращать данные в код, из которого они были вызваны. Метод может возвращать примитивное значение или ссылку на объект, или он не может возвращать ничего , если мы используем ключевое слово void в качестве возвращаемого типа.

Давайте рассмотрим пример метода void :

public void printFullName(String firstName, String lastName) {
    System.out.println(firstName + " " + lastName);
}

Если мы объявляем тип возвращаемого значения, то мы должны указать оператор return в теле метода. Как только оператор return будет выполнен, выполнение тела метода будет завершено, и если будет больше операторов, они не будут обработаны.

С другой стороны, метод void не возвращает никакого значения и, следовательно, не имеет оператора return .

2.3. Идентификатор метода

Идентификатор метода-это имя, которое мы присваиваем спецификации метода. Рекомендуется использовать информативное и описательное название. Стоит отметить, что идентификатор метода может содержать не более 65536 символов (хотя это длинное имя).

2.4. Список параметров

Мы можем указать входные значения для метода в его списке параметров, который заключен в круглые скобки. Метод может иметь от 0 до 255 параметров, разделенных запятыми. Параметром может быть объект , примитив или перечисление . Мы можем использовать аннотации Java на уровне параметров метода (например, аннотацию Spring @RequestParam ).

2.5. Список исключений

Мы можем указать, какие исключения генерируются методом, используя предложение throws . В случае проверенного исключения/| либо мы должны заключить код в предложение try-catch , либо мы должны предоставить предложение throws в сигнатуре метода.

Итак, давайте рассмотрим более сложный вариант нашего предыдущего метода, который вызывает проверенное исключение:

public void writeName(String name) throws IOException {
    PrintWriter out = new PrintWriter(new FileWriter("OutFile.txt"));
    out.println("Name: " + name);
    out.close();
}

2.6. Тело метода

Последняя часть метода Java-это тело метода, которое содержит логику, которую мы хотим выполнить. В теле метода мы можем написать столько строк кода, сколько захотим, или вообще ничего в случае статических методов. Если наш метод объявляет тип возвращаемого значения, то тело метода должно содержать оператор return.

3. Сигнатура метода

Согласно его определению, сигнатура метода состоит только из двух компонентов — имя метода и список параметров .

Итак, давайте напишем простой метод:

public String getName(String firstName, String lastName) {
  return firstName + " " + middleName + " " + lastName;
}

Сигнатура этого метода – getName(String FirstName, String LastName) .

Идентификатор метода может быть любым идентификатором. Однако, если мы следуем общепринятым соглашениям о кодировании Java, идентификатор метода должен быть глаголом в нижнем регистре, за которым могут следовать прилагательные и/или существительные.

4. Вызов метода

Теперь давайте рассмотрим как вызвать метод в Java . Следуя предыдущему примеру, предположим, что эти методы заключены в класс Java , называемый Имя человека :

public class PersonName {
  public String getName(String firstName, String lastName) {
    return firstName + " " + middleName + " " + lastName;
  }
}

Поскольку наш метод getName является методом экземпляра, а не статическим методом , для вызова метода getName нам необходимо создать экземпляр класса | PersonName :

PersonName personName = new PersonName();
String fullName = personName.getName("Alan", "Turing");

Как мы видим, мы используем созданный объект для вызова метода getName .

Наконец, давайте посмотрим на как вызвать статический метод . В случае статического метода нам не нужен экземпляр класса для выполнения вызова. Вместо этого мы вызываем метод с его именем, префиксом имени класса.

Давайте продемонстрируем, используя вариант предыдущего примера:

public class PersonName {
  public static String getName(String firstName, String lastName) {
    return firstName + " " + middleName + " " + lastName;
  }
}

В этом случае вызов метода является:

String fullName = PersonName.getName("Alan", "Turing");

5. Способ Перегрузки

Java позволяет нам иметь два или более методов с одинаковым идентификатором, но разным списком параметров — разные сигнатуры методов . В этом случае мы говорим, что метод перегружен . Давайте рассмотрим пример:

public String getName(String firstName, String lastName) {
  return getName(firstName, "", lastName);
}

public String getName(String firstName, String middleName, String lastName) {
  if (!middleName.isEqualsTo("")) {
    return firstName + " " + lastName;
  }
  return firstName + " " + middleName + " " + lastName;
}

Перегрузка метода полезна в случаях, подобных приведенному в примере, когда у нас может быть метод, реализующий упрощенную версию той же функциональности.

Наконец, хорошая привычка к дизайну заключается в том, чтобы гарантировать, что перегруженные методы ведут себя аналогичным образом. В противном случае код будет сбивать с толку, если метод с тем же идентификатором будет вести себя по-другому.

6. Заключение

В этом уроке мы рассмотрели части синтаксиса Java, используемые при указании метода в Java.

В частности, мы рассмотрели модификатор доступа, тип возвращаемого значения, идентификатор метода, список параметров, список исключений и тело метода. Затем мы увидели определение сигнатуры метода, как вызвать метод и как перегрузить метод.

Как обычно, код, который вы видите здесь, доступен на GitHub .