Що означає "публічна статична порожнеча" у Java?


149

Що public static voidозначає Java?

Я в процесі навчання. У всіх прикладах книги, над якою я працюю, public static voidпередує будь-який метод, який використовується або створюється. Що це означає?

Відповіді:


230

Це три абсолютно різні речі:

publicозначає, що метод є видимим і його можна викликати з інших об'єктів інших типів. Інші альтернативи private, protected, packageі package-private. Дивіться тут для більш детальної інформації.

staticозначає, що метод пов'язаний з класом, а не конкретним екземпляром (об'єктом) цього класу. Це означає, що ви можете викликати статичний метод, не створюючи об’єкт класу.

voidозначає, що метод не має зворотного значення. Якщо метод повернув, intви б написали intзамість void.

Поєднання всіх трьох з них найчастіше спостерігається за mainметодом, який включатиме більшість навчальних посібників.


12
Оскільки запитувач ще вивчає: також важливий порядок цих ключових слів. Все модифікатори (перший public, static, privateі т.д.) , то тип повернення ( voidв даному випадку).
Піндатюх

1
@markbyres ОК, я розумію, що ви відповідаєте, я знаю, що основний метод повинен бути статичним, але я не маю поняття, чому він є загальнодоступним ?? чи є якась конкретна причина для цього ??
hardik

9
середовище виконання Java повинна викликати основний метод для запуску програми. він не міг цього робити, коли був приватним.
Філіпп

44

Три слова мають ортогональне значення.

public означає, що метод буде видно з класів в інших пакетах.

staticозначає, що метод не приєднаний до конкретного примірника, і він не має " this". Це більш-менш функція.

void- тип повернення. Це означає, що "цей метод нічого не повертає".


22

Громадськості ключове слово є специфікатором доступу, який дозволяє програмісту управляти видимістю членів класу. Коли перед членом класу передує загальнодоступний, тоді до нього можна отримати доступ за кодом поза класом, у якому він оголошений. (Протилежність public - приватна, що не дозволяє користувачеві використовувати код, визначений поза його класом.)

У цьому випадку він main( )повинен бути оголошений загальнодоступним, оскільки він повинен бути викликаний кодом поза його класом при запуску програми.

Ключове слово статичний дозволяє main( )викликати без необхідності інстанціювати певний екземпляр класу. Це необхідно, оскільки main( )викликається інтерпретатором Java до того, як будуть зроблені будь-які об'єкти.

Ключове слово void просто повідомляє компілятору, що main( )не повертає значення. Як ви побачите, методи можуть також повертати значення.


18

Це означає, що:

  • public - його можна викликати з будь-якого місця
  • static - він не має жодного стану об'єкта, тому ви можете викликати його без ініціалізації об'єкта
  • void - це нічого не повертає

Ви можете подумати, що відсутність повернення означає, що вона не робить багато, але, можливо, це зберігає речі, наприклад, у базі даних.


4

Це означає три речі.

По-перше, publicозначає, що будь-який інший об’єкт може отримати доступ до нього.

static означає, що клас, в якому він перебуває, не повинен бути спочатку екземпляром, перш ніж функція може бути викликана.

void означає, що функція не повертає значення.

Оскільки ви тільки навчаєтесь, не хвилюйтеся про перші два занадто багато, поки ви не дізнаєтесь про заняття, а третій не матиме великого значення, поки ви не почнете писати функції (крім основної, яка є).

Найкраща порада, яку я отримав, навчаючись програмувати, і яку я передаю вам, - це не хвилюйтеся за дрібниці, які ви не розумієте одразу. Отримайте широкий огляд основ, потім поверніться і потурбуйтеся про деталі. Причина полягає в тому, що ви повинні використовувати деякі речі (наприклад public static void) у своїх перших програмах, які насправді неможливо пояснити, без того, щоб навчити вас спочатку про купу інших речей. Тож на даний момент просто прийміть, що так робиться, і рухайтеся далі. Ви їх зрозумієте незабаром.


3

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

`static`` використовується тому, що у вас може не виникати необхідності створювати фактичний об'єкт на верхньому рівні (але іноді вам захочеться, щоб ви не завжди бачили / використовували статику. Є й інші причини, чому ви не включаєте статичні теж, але це типовий на верхньому рівні.)

voidвикористовується тому, що зазвичай ви не збираєтеся повертати значення з верхнього рівня (класу). (іноді ви хочете повернути значення, відмінне від NULLнедійсного, не завжди може використовуватися, особливо в тому випадку, коли ви оголосили, ініціалізували об'єкт на верхньому рівні, якому ви присвоюєте якесь значення).

Відмова: Я сам новачок, тому якщо ця відповідь якимось чином не відповідає, будь ласка, не вішайте мене. По днях я рекрутер технологій, а не розробник; кодування - моє хобі. Крім того, я завжди відкритий для конструктивної критики і люблю вчитися, тому, будь ласка, не соромтесь вказувати на будь-які помилки.


2
  • public означає, що ви можете отримати доступ до класу з будь-якого місця класу / об’єкта або поза пакетом чи класом
  • static означає константу, в якій блок висловлювань використовується лише 1 раз
  • void означає відсутність типу повернення

6
Це питання було адекватно висвітлено, можливо, спробуйте відповісти на нові запитання замість того, щоб відповідати на більш старі запитання з подвійною інформацією. Дякую.
Кев

Це просто як пояснення про слона. Люди намагаються пояснити це залежно від того, де він стоїть. Я задоволений усіма відповідями вище, але просто цікаво, як хто-небудь може сказати «Купіть книгу java».
Sulung Nugroho

2

Public - означає, що клас (програма) доступний для використання будь-яким іншим класом.

Static- створює клас. Можна також застосовувати до змінних і методів, роблячи їх методами / змінними класу, а не просто локальними для певного екземпляра класу.

Void- це означає, що жоден продукт не повертається, коли клас завершує обробку. Порівняйте це з допоміжними класами, які забезпечують повернення основного класу, вони функціонують як функції; ці декларації не мають значення.


0

staticозначає, що метод пов'язаний з класом, а не конкретним екземпляром (об'єктом) цього класу. Це означає, що ви можете викликати статичний метод, не створюючи об’єкт класу. Через використання staticключового слова main()- це ваш перший метод, на який потрібно викликати .. staticне потрібно жодному об'єкту екземпляру ... так, main( )його викликає інтерпретатор Java до того, як будуть зроблені будь-які об'єкти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.