1. Модификатори за достъп
Преди всеки метод програмистите могат да определят така наречените модификатори на достъпа. Те включват следните ключови думи: public
, protected
, private
.
Тези модификатори на достъп ви позволяват да ограничите достъпа на други класове до метод.
Например, ако напишете private
ключовата дума преди декларация на метод, тогава методът може да бъде извикан само от същия клас, в който е деклариран. Ключовата public
дума позволява достъп до маркирания метод от всеки метод от всеки клас.
Има общо 3 такива модификатора, но има 4 вида достъп до метод. Това е така, защото липсата на модификатор за достъп също означава нещо.
Достъп от... | ||||
---|---|---|---|---|
Модификатори | Всеки клас | Детски клас | Пакетът му | Класата му |
public |
да | да | да | да |
protected |
Не | да | да | да |
без модификатор | Не | Не | да | да |
private |
Не | Не | Не | да |
1. public
модификатор
Метод (or променлива, or клас), маркиран с public
модификатора, може да бъде достъпен от всяко място в програмата . Това е най-високата степен на откритост — няма ограничения.
2. private
модификатор
Метод (or променлива, or клас), маркиран с private
модификатора, може да бъде достъпен само от същия клас, в който е деклариран . За всички останали класове маркираният метод (or променлива) е невидим. Все едно не съществува. Това е най-високото ниво на ограничение - само неговият собствен клас.
3. Без модификатор (модификатор по подразбиране)
Ако даден метод (or променлива) не е маркиран с модификатор, тогава се счита, че има „модификатора по подразбиране“. Променливите or методите с този модификатор (т.е. без ниHowъв) са видими за всички класове в пакета, в който са декларирани . И само на тях. Този модификатор също понякога се нарича package-private
, намеквайки, че достъпът до променливи и методи е отворен за целия пакет, в който се намира техният клас.
4. protected
модификатор
Ако даден метод е маркиран с protected
модификатора, тогава той може да бъде достъпен от същия клас, същия пакет и наследници (класове, които наследяват класа, в който е деклариран методът). Ще анализираме тази тема по-подробно в търсенето на Java Core.
Можете да използвате public
модификатора за всичките си методи (Howто и за всичките си класове и променливи на класове), докато стигнете до края на търсенето на Java Syntax. Ще имате нужда от другите модификатори, когато започнем активно да изучаваме ООП.
Защо са необходими модификатори за достъп?
Те стават необходими за големи проекти, писани от десетки и стотици програмисти едновременно.
Понякога има ситуации, когато програмист иска да раздели прекалено голям метод на части и да премести част от codeа в помощни методи. Но в същото време той or тя не иска други програмисти да извикват тези помощни методи, защото съответният code може да не работи правилно.
Така че те излязоха с тези модификатори на достъпа. Ако маркирате помощен метод с думата private , тогава никой друг code освен вашия клас не може да види вашия помощен метод.
2. static
ключова дума
Ключовата static
дума прави метод статичен. Ще разгледаме Howво означава това по-късно. Засега просто запомнете няколко факта за статичните методи.
Факт 1. Статичният метод не е прикачен към нито един обект , а instead of това принадлежи към класа, в който е деклариран. За да извикате статичен метод, трябва да напишете:
ClassName.MethodName()
Примери за статични методи:
Име на класа | Име на статичен метод | |
---|---|---|
Thread.sleep() |
Thread |
sleep() |
Math.abs() |
Math |
abs() |
Arrays.sort() |
Arrays |
sort() |
Името на класа преди името на статичен метод може да бъде пропуснато, ако извикате статичния метод от неговия клас. Ето защо не е необходимо да пишете Solution
преди имената на всеки от статичните методи, които се извикват.
Факт 2. Статичният метод не може да има достъп до нестатичните методи на собствения си клас. Статичният метод има достъп само до статични методи. В резултат на това декларираме всички методи, които искаме да извикаме от метода main
статични.
Защо? Ще можете сами да отговорите на този въпрос, когато започнете да изучавате ООП и разберете How работят статичните методи.
3. throws
ключова дума
Има друга ключова дума, която вероятно сте виждали в декларация на метод - throws
ключовата дума. За разлика от модификаторите за достъп и static
ключовата дума, тази ключова дума се поставя след параметрите на метода:
public static Type name(parameters) throws Exception
{
method body
}
Ще разгледаме точното му meaning малко по-късно, когато изучаваме изключенията.
Но за да го докоснем повърхностно, можем да кажем, че метод, маркиран с ключовата дума throws, може да генерира грешки (изключения), което означава екземпляри на класа Exception
(и класове, които го наследяват). Ако в клас могат да възникнат няколко различни типа грешки, тогава трябва да изброите всяка от тях, разделени със запетаи.
4. main
метод
Редът, в който е деклариран метод, който съдържа всички модификатори, ще повлияе на това How този метод се извиква от други класове и методи. Той засяга типа резултат, който методът ще върне, и показва Howви грешки са възможни, докато се изпълнява.
Такъв ред се нарича декларация на метод и има следния общ формат:
access modifier static Type name(parameters) throws exceptions
Където access modifiers
се заменя с public
, protected
, private
or нищо;
ако методът е статичен, тогава static
се появява ключовата дума (липсва за нестатичните методи)
Type
е типът на върнатата стойност ( void
ако няма резултат)
Сега вероятно разбирате Howво означават всички ключови думи в декларацията на main
метода:
public static void main(String[] args) throws Exception
main
метода
Достъпът до main()
метода е възможен от всеки клас, Howто е посочено от public
ключовата дума.
Методът е статичен, така че може да бъде извикан изрично като Solution.main()
.
Методът main
не връща ниHowъв резултат. Върнатият тип е void
(без тип).
Методът main
приема аргументи(!): масив от низове. И името на параметъра args
предлага „аргументи“ на умовете ни. Когато програмата стартира, можете да й подадете аргументи - масив от низове. Те ще се съдържат в args
масива в main()
метода.
Необработени грешки като Exception
(or негови наследници) могат да възникнат в main()
метода.
GO TO FULL VERSION