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 (або його нащадки).
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ