Руководство по Java Core. Методы.

Метод – это набор выражений, которые объединены вместе для выполнения определённой операции.

Например, когда мы вызываем метод 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.