Одна из базовых конструкций в программировании - функция. С помощью функций мы выделяем повторяющиеся блоки кода и вводим новые операции, которые не заложены в язык. В большинстве языков функции создаются просто, для этого достаточно знать синтаксис определения. Ниже пример на 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 все же рассчитана на другой стиль работы.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.