Зарегистрируйтесь, чтобы продолжить обучение

Статические методы Java: Введение в ООП

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

// Функция возвращает строку
// Типы определять не надо, js динамический язык
function greeting() {
  return 'just a string';
}
// Вызов можно делать в любом месте
// Даже просто в файле, вне других функций
greeting(); // 'Just a string'

С Java все немного сложнее. Она не позволяет создавать обычные функции. Java требует наличия класса для определения функций, которые, в этом случае, называются методами. Для сравнения перепишем пример с JavaScript на Java:

// Имя класса можно выбирать произвольно
class App {
    // public - дает возможность вызывать метод снаружи класса
    // static - пока просто нужно, позже разберемся
    // String - возвращаемый тип
    public static String greeting() {
        return "just a string";
    }
}

// Любой код в Java выполняется только внутри классов
// Поэтому вызов метода greeting() тоже будет где-то внутри

// Где-то в другом месте программы
class SomeName {
    public static void someMethod() {
        // Для вызова статического метода нужно
        // указывать имя класса
        App.greeting();
    }
}

Если вызов метода идет из того же класса, где он определен, то указывать имя класса перед ним не нужно:

class App {
    public static String greeting() {
        return "just a string";
    }

    public static void main(String[] args) {
        // Тот же класс, поэтому имя не обязательно
        greeting();
        // Хотя, чисто технически, его можно поставить
        // App.greeting();
    }
}

https://replit.com/@hexlet/java-oop-basics-static-methods

Основная разница между функцией greeting() на JavaScript и методом greeting() на Java заключается в наличии класса в определении метода и его же указание при вызове из других классов. Возникает вопрос, зачем нужен класс когда можно просто создавать функции? Вообще так делать было не обязательно, но создатели Java решили по-другому. Например, в Kotlin, который тоже работает на виртуальной машине Java, нет такого ограничения, там можно создавать обычные функции.

Несмотря на наличие класса и смены названия на "метод", по сути, мы получили обычную функцию, которая определена в классе и вызывается через класс. Достигается это за счет ключевого слова static. Без него методы работают совсем по-другому, о чем мы поговорим в следующих уроках. Методы, определенные как static, называют статическими.

Еще немного примеров статических методов из реальной жизни:

// Встроенные в Java
// возвращает модуль числа
var y = Math.abs(-30);

// находит минимальное число
var m = Math.min(10, 11);

// Из библиотеки org.apache.commons.lang3
// возвращает случайное число
var x = RandomUtils.nextInt(1, 1000);

Теоретически мы могли бы писать код только в таком стиле, пользуясь одними статическими методами. Этого достаточно для решения любых задач, правда код получится не очень, так как Java все же рассчитана на другой стиль работы.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 26 декабря

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

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