Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Методы в Java: создание, вызов и абстракция

Метод в Java — это набор инструкций, сгруппированных для выполнения операции. Когда вы вызываете System.out.println(), система на самом деле выполняет несколько инструкций для вывода сообщения на консоль.

Создание метода

Синтаксис объявления метода:

модификатор тип_возврата имя_метода (список_параметров) {
    // тело метода
}

Компоненты:

Пример: метод minFunction

/** Возвращает минимальное из двух чисел */
public static int minFunction(int n1, int n2) {
    int min;
    if (n1 > n2)
        min = n2;
    else
        min = n1;
    return min;
}

Вызов метода

Метод вызывается по имени. При вызове управление передаётся методу; оно возвращается к вызывающему коду при выполнении return или достижении закрывающей фигурной скобки.

Пример: определение и вызов

public class ExampleMinNumber {
    public static void main(String[] args) {
        int a = 11;
        int b = 6;
        int c = minFunction(a, b);
        System.out.println("Minimum Value = " + c);
    }

    public static int minFunction(int n1, int n2) {
        int min;
        if (n1 > n2) min = n2;
        else min = n1;
        return min;
    }
}

Результат:

Minimum value = 6

Ключевое слово void

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

public class ExampleVoid {
    public static void main(String[] args) {
        methodRankPoints(255.7);
    }

    public static void methodRankPoints(double points) {
        if (points >= 202.5) {
            System.out.println("Rank:A1");
        } else if (points >= 122.4) {
            System.out.println("Rank:A2");
        } else {
            System.out.println("Rank:A3");
        }
    }
}

Результат:

Rank:A1

Передача параметров по значению

В Java аргументы передаются по значению. При вызове метода значение аргумента копируется в параметр. Изменения параметра внутри метода не влияют на исходный аргумент.

public class SwappingExample {
    public static void main(String[] args) {
        int a = 30;
        int b = 45;
        System.out.println("Before swapping, a = " + a + " and b = " + b);
        swapFunction(a, b);
        System.out.println("After swapping, a = " + a + " and b = " + b);
    }

    public static void swapFunction(int a, int b) {
        int c = a;
        a = b;
        b = c;
        System.out.println("Inside: a = " + a + ", b = " + b);
    }
}

Результат:

Before swapping, a = 30 and b = 45
Inside: a = 45, b = 30
After swapping, a = 30 and b = 45

Перегрузка методов (Overloading)

Перегрузка — наличие в классе нескольких методов с одинаковым именем, но разными списками параметров (тип, количество, порядок). Возвращаемый тип может отличаться.

public class ExampleOverloading {
    public static void main(String[] args) {
        int a = 11, b = 6;
        double c = 7.3, d = 9.4;
        System.out.println("Minimum Value = " + minFunction(a, b));
        System.out.println("Minimum Value = " + minFunction(c, d));
    }

    public static int minFunction(int n1, int n2) {
        return (n1 > n2) ? n2 : n1;
    }

    public static double minFunction(double n1, double n2) {
        return (n1 > n2) ? n2 : n1;
    }
}

Результат:

Minimum Value = 6
Minimum Value = 7.3

Аргументы командной строки

Аргументы передаются в метод main(String[] args) как массив строк.

public class CommandLine {
    public static void main(String args[]) {
        for (int i = 0; i < args.length; i++) {
            System.out.println("args[" + i + "]: " + args[i]);
        }
    }
}

Запуск: java CommandLine this is a command line 200 -100

Результат:

args[0]: this
args[1]: is
args[2]: a
args[3]: command
args[4]: line
args[5]: 200
args[6]: -100

Ключевое слово this

this — ссылка на текущий объект. Используется в экземплярных методах и конструкторах для:

public class This_Example {
    int num = 10;

    This_Example() {
        System.out.println("Пример использования this");
    }

    This_Example(int num) {
        this(); // вызов конструктора по умолчанию
        this.num = num; // присваивание полю
    }

    public void greet() {
        System.out.println("Hi Welcome to Tutorialspoint");
    }

    public void print() {
        int num = 20; // локальная переменная
        System.out.println("Local num: " + num);
        System.out.println("Instance num: " + this.num);
        this.greet();
    }

    public static void main(String[] args) {
        This_Example obj1 = new This_Example();
        obj1.print();
        This_Example obj2 = new This_Example(30);
        obj2.print();
    }
}

Переменное число аргументов (var-args)

Начиная с JDK 1.5, можно передавать переменное количество аргументов одного типа. Объявляется как тип... имя. Только один var-args параметр, должен быть последним.

public class VarargsDemo {
    public static void main(String args[]) {
        printMax(34, 3, 3, 2, 56.5);
        printMax(new double[]{1, 2, 3});
    }

    public static void printMax(double... numbers) {
        if (numbers.length == 0) {
            System.out.println("No argument passed");
            return;
        }
        double result = numbers[0];
        for (int i = 1; i < numbers.length; i++)
            if (numbers[i] > result) result = numbers[i];
        System.out.println("The max value is " + result);
    }
}

Результат:

The max value is 56.5
The max value is 3.0

Метод finalize()

Метод finalize() вызывается сборщиком мусора перед уничтожением объекта. Используется для очистки ресурсов (закрытие файлов и т.д.).

protected void finalize() {
    // код завершения
}

Важно: не гарантируется, что finalize() будет вызван (например, если программа завершится до работы GC). Начиная с Java 9, метод объявлен устаревшим (@Deprecated); рекомендуется использовать try-with-resources или Cleaner.

java

  1. Освоение операторов Java: типы, синтаксис и практические примеры
  2. Абстрактные классы и методы в Java: полное руководство
  3. Типы аннотаций в Java: предопределенные, кастомные и мета-аннотации
  4. Понимание String.charAt() в Java: синтаксис, возвращаемый тип, исключения и пример
  5. Освоение String.endsWith() в Java: проверка суффиксов строки с примерами
  6. Замена строк в Java: replace(), replaceAll() и replaceFirst() подробно
  7. Java String toLowerCase() и toUpperCase(): преобразование регистра с учётом локали
  8. Переопределение методов в Java: настройка поведения суперкласса
  9. Java 9 Collection Factory Methods: удобное создание неизменяемых List, Set, Map
  10. Java 9 Private Interface Methods: инкапсуляция и повторное использование кода