JavaRush /Курсы /Java Syntax Pro /Модификаторы методов

Модификаторы методов

Java Syntax Pro
6 уровень , 3 лекция
Открыта

1. Модификаторы доступа

Перед каждым методом программист может указать так называемые модификаторы доступа. К ним относятся ключевые слова: public, protected, private.

Эти «модификаторы доступа» позволяют ограничивать доступ к методу из других классов.

Например, если перед объявлением метода написать ключевое слово private, этот метод можно будет вызывать только из того же класса, в котором он объявлен. Ключевое слово public разрешает обращение к помеченному методу из любого метода любого класса.

Всего таких модификаторов 3, а типов доступа к методу — 4, ведь отсутствие модификатора доступа тоже что-то значит.

Доступ из...
Модификаторы Любого класса Класса-наследника Своего пакета Своего класса
public Есть Есть Есть Есть
protected Нет Есть Есть Есть
без модификатора Нет Нет Есть Есть
private Нет Нет Нет Есть

1. Модификатор public.

К методу (переменной или классу), помеченному модификатором public, можно обращаться из любого места программы. Это самая высокая степень открытости – никаких ограничений нет.

2. Модификатор private.

К методу (переменной или классу), помеченному модификатором private, можно обращаться только из того же класса, где он объявлен. Для всех остальных классов помеченный метод (или переменная) – невидимы и «как бы не существуют». Это самая высокая степень закрытости — только свой класс.

3. Без модификатора (модификатор по умолчанию).

Если метод (или переменная) не помечены никаким модификатором, считается, что они помечены «модификатором по умолчанию». Переменные или методы с таким модификатором (т.е. вообще без какого-нибудь) видны всем классам пакета, в котором они объявлены. И только им. Этот модификатор еще иногда называют package, намекая, что доступ к переменным и методам открыт для всего пакета, в котором находится их класс

4. Модификатор protected.

Если метод помечен модификатором protected, к нему можно обращаться из того же класса, того же пакета и классов наследников (классов, унаследованных от класса, в котором объявлен метод). Эту тему разберем подробнее в квесте Java Core.

До конца квеста Java Syntax вы можете всем своим методам (а также классам и переменным класса) указывать модификатор public. Другие модификаторы вам понадобятся, когда мы начнем активно изучать ООП.

Зачем нужны модификаторы доступа?

Все дело в больших проектах, которые пишут десятки и сотни программистов одновременно.

Иногда бывают ситуации, когда программист хочет разделить слишком большой метод своего класса на части и вынести часть кода во вспомогательные методы. Но вместе с тем он не хочет, чтобы другие программисты вызывали эти вспомогательные методы, т.к. тогда код его класса может работать неправильно.

Вот и придумали такие модификаторы доступа. Пометил вспомогательный метод словом private, и никакой код кроме вашего класса не сможет увидеть ваш вспомогательный метод.



2. Ключевое слово static

Ключевое слово static превращает метод в статический. Что это такое, мы рассмотрим позднее, а сейчас просто запомним пару фактов про статические методы.

Факт 1. Статический метод не привязан ни к какому объекту, но относится к классу, в котором объявлен. Чтобы вызвать статический метод, нужно написать:

ИмяКласса.имяМетода()

Примеры статических методов:

Имя класса Имя статического метода
Thread.sleep() Thread sleep()
Math.abs() Math abs()
Arrays.sort() Arrays sort()

Имя класса перед именем статического метода можно не писать, если вы вызываете статический метод изнутри — из того же класса. Именно поэтому вам не нужно каждый раз писать Solution перед именами вызываемых статических методов.

Факт 2. Статический метод не может обращаться к нестатическим методам его же класса. Статический метод может обращаться только к статическим методам. Поэтому все методы, которые мы хотим вызвать из метода main, мы объявляем статическими.

Почему? Вы сами сможете ответить на этот вопрос, когда начнете изучать ООП и поймете, как устроены статические методы.



3. Ключевое слово throws

Есть еще одно ключевое слово, которое вы, вероятно, видели рядом с объявлением метода — это слово throws. Оно, в отличие от модификаторов доступа и ключевого слова static, размещается после параметров метода:

public static тип имя(параметры) throws Exception
{
   код метода
}

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

Но если поверхностно коснуться его, можно сказать, что в методе, помеченном словом throws, могут возникать ошибки (исключения) типа Exception (и унаследованных от него классов). Если в классе могут возникнуть ошибки нескольких типов, нужно перечислить все типы через запятую.


4. Метод main

Строка, в которой объявляется метод, со всеми модификаторами, будет влиять на то, как этот метод будет вызываться из других классов и методов. Результат какого типа он будет возвращать и какие возможны ошибки при его работе.

Такая строка называется объявлением метода и имеет общий вид:

модификаторы доступа static тип имя(параметры) throws исключения
Общий вид объявления метода

Где модификаторы доступа — это public, protected, private или ничего;

static ставится, если метод статический (отсутствует для нестатических методов)

тип — тип результата функции (void если результат отсутствует)

Теперь вы скорее всего понимаете, что значат все ключевые слова при объявлении метода main:

public static void main(String[] args) throws Exception
Объявление метода main

Доступ к методу main() возможен из любого класса, об этом говорит слово public.

Метод статический (его можно явно вызвать в виде Solution.main()).

Метод main не возвращает никакого результата. Тип результата — void (пустой тип/заглушка)

Метод main принимает параметры(!): массив строк. И название args намекает на «аргументы программы». При запуске программы в нее можно передать параметры — массив строк. Они и будут содержаться в массиве args метода main().

В методе main() могут возникать необработанные ошибки типа Exception (или его наследники).



Комментарии (268)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Timur Salakhov Уровень 9
22 января 2026
Работаем
Анна Клушкина Уровень 12
6 января 2026
Ура, пошли темы поинтереснее
Роман Зарубин Уровень 8
9 декабря 2025
Работаем !
C0N5P1RACY Уровень 21
30 ноября 2025
Теперь вы скорее всего понимаете, что значат все ключевые слова при объявлении метода main: Нет, теперь я еще больше ничего не понимаю...
Никита Языков Уровень 11
26 августа 2025
Вот это (.)(.)решки Биг Боб
Anonymous #3608596 Уровень 9
22 августа 2025
Лайк те кто вообще не читает комиксы. Просто интересно много ли тех кому они изначально не интересны. Было бы славно иметь опцию отключения комиксов в лекциях. Лично для меня они кажутся лишними (мое мнение) :( public void interestedComics(String answer){ if (answer.equals("Not into comics")){ Comics.turnOffComics(); } else if (answer.equals("Into comics")){ Comics.turnOnComics(); } }
Entropie Уровень 8
26 сентября 2025
Комиксы весьма так себе, но я читаю :)
Vadim Уровень 16
19 августа 2025
ничего не понятно, но ооочень интересно
Anonymous #3585174 Уровень 33
6 июня 2025
like
KemaOnes Уровень 4
15 апреля 2025
Друзья, я прекрасно понимаю тех, кому тяжело изучать программирование. У вас не получается решить задачу? Не можете понять тему? Иногда вы даже не понимаете, что требуется от вас в задаче? Это знакомо не только начинающим, вы такой не один. Если вам что то непонятно и вы тупите, это абсолютно нормально, каждый проходит через это. Это не значит, что вы хуже остальных. Не значит, что вы неспособны изучать программирование. Думаете, что кому то дается это легко и все идет как по маслу? Ошибаетесь! Я начал изучать разработку в 21 год, без ментора, в соло, как и большинство тут. Отмечу сразу данный курс javarush. Тут я узнал много нового, закреплял это все задачками, общался с ребятами с курса. Общение с другими людьми по духу сильно прокачивает вас. Еще я создал тг канал для ребят, которые только начинают свой путь. Там много полезной инфы по питону и джаве, да и целом про Backend. Как легко устроиться на первую работу и море мотивации. Сможете найти себе единоличников, общаться и узнавать новое. Буду рад каждому ) В общем, изучение было тяжелым, я мог сидеть над простой задачей час. И каждый раз ловил себя на мысли, может это все таки не мое и я себя обманываю? Уверен, что вы задавались таким же вопросом. Но я не сдался и продолжал, откладывал тяжелые темы и двигался вперед. Практиковался постоянно, регулярно что то изучал. Самое главное в этом деле, не прокрастинировать. Сейчас я работаю backend разработчиком в нестыдной компании. Потому что я не сдался и шел до конца. Уверен, что и у тебя получится! И запомните, если кажется, что учиться программированию легко, значит вы не учитесь.
Alina Gabidulina Уровень 27
24 апреля 2025
ой как ты заебал
27 мая 2025
так чел мотивацию закинул че тут плохого
Alina Gabidulina Уровень 27
29 мая 2025
он это под каждой лекцией пишет, канал у него посвящен питону, по крайней мере когда я чекала, так было
Искендер Уровень 115
30 марта 2025
кому не понятно, что за this. нашел статью тут: https://javarush.com/groups/posts/608-kljuchevoe-slovo-this-v-primerakh
Семен Уровень 13
14 октября 2025
Спасибо!