Метод – это набор выражений, которые объединены вместе для выполнения определённой операции.
Например, когда мы вызываем метод System.out.println(), начинается выполнение целого ряда операций для того, чтобы в итоге отобразить вывести сообщение в консоль.
В этом уроке мы более подробно изучим, как создавать собственные методы. Рассмотрим методы, возвращающие определённое значение, и которые – нет. Также, мы поговорим о том, что такое перезагрузка метода.
В общем виде, методы выглядит следующим образом:
modifier returnValue methodName (parameters of the method){
body of the method...
}
Метод состоит из следующих сущностей:
- Модификатор
Модификатор метода говорит компилятору как вызывать данный метод и определяет уровень доступа данного метода. Модификатор не является обязательной частью объявления метода. - Возвращаемый тип
Метод возвращать значение. Возвращаемый тип – это тип данных, который будет возвращён данным методом. Если нам не нужно, чтобы метод возвращал значение, то мы должным использовать ключевое слово void в качестве возвращаемого типа. - Имя метода
Непосредственно, имя метода, которе является его идентификатором. - Параметры
Если нам необходимо, выполнить определённые вычисления, например получить сумму двух чисел, то мы должны передать методу эти два числа. Передать эти числа мы можем с помощью параметров метода. Мы должны указать тип данных этих параметров. Метод также может не иметь параметров. - Тело метода
Тело метода включает в себя набор выражений, которые определяют поведение метода. В случае со сложением двух чисел, метод выполнит операцию сложения.
Для понимания того, как это работает на практике, рассмотрим пример простого приложения.
Пример:
public class MethodsDemo {
public static void main(String[] args) {
int a = 5;
int b = 10;
int c;
c = calculateSum(a, b);
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("Calculate the sum, using method calculateSum()...");
System.out.println("c = " + a + " + " + b + " = " + c);
System.out.println("Find the max number, using method findMaxNumber()...");
findMaxNumber(a, b);
}
static int calculateSum(int a, int b) {
int c = a + b;
return c;
}
static void findMaxNumber(int a, int b) {
if (a == b) {
System.out.println("This numbers are equal.\n");
} else if (a > b) {
System.out.println("First number " + a + " is larger than " + b + "\n");
} else {
System.out.println("Second number " + b + " is larger than " + a + "\n");
}
}
}
В результате работы программы мы получим следующий результат:
/*Some system messages*/
a = 5
b = 10
Calculate the sum, using method calculateSum()...
c = 5 + 10 = 15
Find the max number, using method findMaxNumber()...
Second number 10 is larger than 5
Как мы видим, первый метод принимает два параметра и возвращает значение (сумму этих чисел). Второй метода, также принимает два параметра, но не возвращает никакого значения. Вместо этого он определяет максимальное число и выводит текстовое сообщение.
Перегрузка методов
Иногда нам необходимо выполнять одни и те же операции для разных типов данных. Например, нам необходимо определять сумму не только для целых чисел, но и для чисел с плавающей точкой. Перегруженный метод должен иметь такое же название, как и первый, но список параметров должен отличаться (либо типы данных, либо количество параметров, либо и то, и другое). Рассмотрим пример простого приложения.
Пример:
public class OverloadingMethodDemo {
public static void main(String[] args) {
int a = 5;
int b = 10;
double c = 3.3;
double d = 4.4;
System.out.println("Initial variables: ");
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
System.out.println("d = " + d);
System.out.println("Calculate sum of integers using method calculateSum(): ");
int integerSum = calculateSum(a,b);
System.out.println("Sum of integers is: " + integerSum);
System.out.println("\n========================\n");
System.out.println("Calculate sum of floating point numbers using method calculateSum(): ");
double doubleSum = calculateSum(c,d);
System.out.println("Sum of floating point numbers is: " + doubleSum);
System.out.println("\n========================\n");
}
static int calculateSum(int a, int b) {
return a + b;
}
static double calculateSum(double a, double b) {
return a + b;
}
}
В результате работы программы мы получим следующий результат:
/*Some system messages*/
Initial variables:
a = 5
b = 10
c = 3.3
d = 4.4
Calculate sum of integers using method calculateSum():
Sum of integers is: 15
========================
Calculate sum of floating point numbers using method calculateSum():
Sum of floating point numbers is: 7.7
========================
Конструкторы
Конструктор по своей сути тоже метод, имеющий такое же название, как и класс, в котором он создан. Его задача создавать экземпляры данного классы (объекты).
Все классы имеют конструктор. Даже если он не объявлен явно, то используется конструктор по умолчанию (без аргументов – всем переменным присваиваются значения по умолчанию, согласно спецификации).
Рассмотрим пример простого приложения с использованием конструктора.
Класс Developer
public class Developer {
int id;
String firstName;
String lastName;
String specialty;
int experience;
/**
* Default constructor
*/
public Developer() {
}
/**
* Simple constructor
*/
public Developer(int id, String firstName, String lastName, String specialty, int experience) {
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
this.specialty = specialty;
this.experience = experience;
}
@Override
public String toString() {
return "Developer Info: " +
"\nid: " + id +
"\nFirst Name: " + firstName +
"\nLast Name: " + lastName +
"\nSpecialty: " + specialty +
"\nExperience: " + experience + "\n";
}
}
Класс DeveloperRunner
public class DeveloperRunner {
public static void main(String[] args) {
Developer emptyDeveloper = new Developer();
Developer filledDeveloper = new Developer(1, "First", "Developer", "Java", 3);
System.out.println(emptyDeveloper);
System.out.println(filledDeveloper);
}
}
В результате работы программы мы получим следующий результат:
/*Some system messages*/
Developer Info:
id: 0
First Name: null
Last Name: null
Specialty: null
Experience: 0
Developer Info:
id: 1
First Name: First
Last Name: Developer
Specialty: Java
Experience: 3
В этом уроке мы более подробно изучили, что такое методы, какие виды методов существуют и рассмотрели примеры с их использованием.
Мы также рассмотрел конструкторы, как сущность, похожую на метод.
В следующем уроке мы изучим основы пакет java.io.