Автор оригинала: 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 .