1. Modyfikatory dostępu
Przed każdą metodą programista może określić tzw. modyfikatory dostępu. Należą do nich słowa kluczowe: public
, protected
, private
.
Te „modyfikatory dostępu” pozwalają ograniczyć dostęp do metody z innych klas.
Na przykład, jeśli napiszesz słowo kluczowe przed zadeklarowaniem metody private
, metoda ta może zostać wywołana tylko z tej samej klasy, w której została zadeklarowana. Słowo kluczowe public
umożliwia wywołanie oznaczonej metody z dowolnej metody dowolnej klasy.
W sumie są 3 takie modyfikatory i 4 rodzaje dostępu do metody, bo brak modyfikatora dostępu też coś znaczy.
Dojazd z... | ||||
---|---|---|---|---|
Modyfikatory | Dowolna klasa | Klasa potomka | Twój pakunek | W swojej klasie |
public |
Jeść | Jeść | Jeść | Jeść |
protected |
NIE | Jeść | Jeść | Jeść |
bez modyfikatora | NIE | NIE | Jeść | Jeść |
private |
NIE | NIE | NIE | Jeść |
1. Modyfikator public
.
Dostęp do metody (zmiennej lub klasy) oznaczonej modyfikatorem public
można uzyskać z dowolnego miejsca w programie . To najwyższy stopień otwartości – nie ma żadnych ograniczeń.
2. Modyfikator private
.
Dostęp do metody (zmiennej lub klasy) oznaczonej modyfikatorem private
można uzyskać tylko z tej samej klasy, w której została zadeklarowana . Dla wszystkich innych klas zaznaczona metoda (lub zmienna) jest niewidoczna i „tak jakby nie istniała”. To najwyższy stopień bliskości - tylko własna klasa.
3. Brak modyfikatora (modyfikator domyślny).
Jeśli metoda (lub zmienna) nie jest oznaczona żadnym modyfikatorem, uważa się, że jest oznaczona „modyfikatorem domyślnym”. Zmienne lub metody z takim modyfikatorem (czyli bez żadnego modyfikatora) są widoczne dla wszystkich klas pakietu, w którym zostały zadeklarowane . I tylko do nich. Ten modyfikator jest czasami nazywany package
, co sugeruje, że dostęp do zmiennych i metod jest otwarty dla całego pakietu, w którym znajduje się ich klasa.
4. Modyfikator protected
.
Jeśli metoda jest oznaczona modyfikatorem protected
, można uzyskać do niej dostęp z tej samej klasy, tego samego pakietu i klas potomnych (klas odziedziczonych z klasy, w której metoda jest zadeklarowana). Przeanalizujemy ten temat bardziej szczegółowo w zadaniu Java Core.
Do końca zadania Java Syntax możesz podać modyfikator .dla wszystkich swoich metod (a także klas i zmiennych klas) public
. Będziesz potrzebował innych modyfikatorów, gdy zaczniemy aktywnie uczyć się OOP.
Dlaczego potrzebne są modyfikatory dostępu?
Chodzi o duże projekty, które są pisane przez dziesiątki i setki programistów jednocześnie.
Czasami zdarzają się sytuacje, gdy programista chce podzielić zbyt dużą metodę swojej klasy na części i przenieść część kodu do metod pomocniczych. Ale jednocześnie nie chce, aby inni programiści wywoływali te metody pomocnicze, ponieważ wtedy kod jego klasy może nie działać poprawnie.
Wymyślili więc takie modyfikatory dostępu. Oznacz metodę pomocnika słowem private , a żaden kod inny niż twoja klasa nie zobaczy twojej metody pomocnika.
2. Słowo kluczowestatic
Słowo kluczowe static
powoduje, że metoda jest statyczna. Co to jest, rozważymy później, ale na razie zapamiętaj tylko kilka faktów na temat metod statycznych.
Fakt 1: Metoda statyczna nie jest dołączona do żadnego obiektu , ale należy do klasy, w której została zadeklarowana. Aby wywołać metodę statyczną, napisz:
NazwaКласса.nazwa metody()
Przykłady metod statycznych:
Nazwa klasy | Nazwa metody statycznej | |
---|---|---|
Thread.sleep() |
Thread |
sleep() |
Math.abs() |
Math |
abs() |
Arrays.sort() |
Arrays |
sort() |
Nazwę klasy można pominąć przed nazwą metody statycznej, jeśli wywołujesz metodę statyczną od wewnątrz - z tej samej klasy. Dzięki temu nie trzeba za każdym razem pisać przed nazwami wywoływanych metod statycznych Solution
.
Fakt 2. Metoda statyczna nie może uzyskać dostępu do niestatycznych metod własnej klasy. Metoda statyczna może uzyskiwać dostęp tylko do metod statycznych. Dlatego wszystkie metody, które chcemy wywołać z metody main
, deklarujemy jako statyczne.
Dlaczego? Będziesz w stanie sam odpowiedzieć na to pytanie, gdy zaczniesz uczyć się OOP i zrozumiesz, jak działają metody statyczne.
3. Słowo kluczowethrows
Jest jeszcze jedno słowo kluczowe, które prawdopodobnie widziałeś obok deklaracji metody, a mianowicie słowo throws
. W przeciwieństwie do modyfikatorów dostępu i słowa kluczowego static
, jest umieszczany po parametrach metody:
public static тип Nazwa(параметры) throws Exception
{
kod метода
}
Co to dokładnie oznacza, przeanalizujemy nieco później, kiedy będziemy badać wyjątki.
Ale jeśli dotkniesz tego powierzchownie, możesz powiedzieć, że w metodzie oznaczonej słowem throws mogą wystąpić błędy (wyjątki) typu Exception
(i dziedziczonych po nim klas) . Jeśli w klasie może wystąpić więcej niż jeden typ błędu, należy wymienić wszystkie typy oddzielone przecinkami.
4. Metodamain
Linia, w której zadeklarowana jest metoda, ze wszystkimi modyfikatorami, wpłynie na sposób wywołania tej metody z innych klas i metod. Jakiego rodzaju wynik zwróci i jakie błędy są możliwe podczas jego działania.
Taka linia nazywana jest deklaracją metody i ma ogólną postać:
модификаторы доступа static тип Nazwa(параметры) throws исключения
Gdzie модификаторы доступа
jest public
, lub nic protected
;private
static
ustaw, jeśli metoda jest statyczna (brak dla metod niestatycznych)
тип
- typ wyniku funkcji ( void
jeśli nie ma wyniku)
Teraz prawdopodobnie rozumiesz, co oznaczają wszystkie słowa kluczowe podczas deklarowania metody main
:
public static void main(String[] args) throws Exception
Dostęp do metody main()
jest możliwy z dowolnej klasy, na co wskazuje słowo public
.
Metoda jest statyczna (można ją jawnie wywołać w formie Solution.main()
).
Metoda main
nie zwraca żadnego wyniku. Typ wyniku - void
(pusty typ/stub)
Metoda main
przyjmuje parametry(!): tablicę ciągów znaków. A nazwa args
nawiązuje do „argumentów programowych”. Podczas uruchamiania programu możesz przekazać mu parametry - tablicę ciągów znaków. Będą one zawarte w tablicy args
metod main()
.
W metodzie main()
może wystąpić nieobsługiwany błąd typu Exception
(lub jego potomków) .
GO TO FULL VERSION