1. Adgangsmodifikatorer

Før hver metode kan programmører angive såkaldte adgangsmodifikatorer. Disse omfatter følgende nøgleord: public, protected, private.

Disse adgangsmodifikatorer lader dig begrænse andre klassers adgang til en metode.

For eksempel, hvis du skriver privatenøgleordet før en metodeerklæring, så kan metoden kun kaldes fra den samme klasse, som den er erklæret i. Nøgleordet publicgiver adgang til den markerede metode fra enhver metode af enhver klasse.

Der er i alt 3 sådanne modifikatorer, men der er 4 typer adgang til en metode. Dette skyldes, at fraværet af en adgangsmodifikator også betyder noget.

Adgang fra...
Modifikatorer Enhver klasse Børneklasse Dens pakke Dens klasse
public Ja Ja Ja Ja
protected Ingen Ja Ja Ja
ingen modifikator Ingen Ingen Ja Ja
private Ingen Ingen Ingen Ja

1. publicmodifikator

En metode (eller variabel eller klasse) markeret med publicmodifikatoren kan tilgås fra hvor som helst i programmet . Dette er den højeste grad af åbenhed - der er ingen begrænsninger.

2. privatemodifikator

En metode (eller variabel eller klasse) markeret med modifikationen privatekan kun tilgås fra den samme klasse, hvor den er erklæret . For alle andre klasser er den markerede metode (eller variabel) usynlig. Det er, som om det ikke eksisterer. Dette er det højeste niveau af begrænsning - kun sin egen klasse.

3. Ingen modifikator (standardmodifikator)

Hvis en metode (eller variabel) ikke er markeret med en modifikator, anses den for at have 'standardmodifikatoren'. Variabler eller metoder med den modifikator (dvs. med ingen overhovedet) er synlige for alle klasser i pakken, hvori de er erklæret . Og kun til dem. Denne modifikator kaldes også nogle gange package-private, hvilket antyder, at adgang til variabler og metoder er åben for hele pakken, hvori deres klasse er placeret.

4. protectedmodifikator

Hvis en metode er markeret med protectedmodifikatoren, så kan den tilgås fra den samme klasse, den samme pakke og efterkommere (klasser, der arver den klasse, som metoden er erklæret i). Vi vil analysere dette emne mere detaljeret i Java Core-questen.

Du kan bruge publicmodifikatoren på alle dine metoder (såvel som alle dine klasser og klassevariabler), indtil du når slutningen af ​​Java Syntax-questen. Du skal bruge de andre modifikatorer, når vi begynder aktivt at lære OOP.

Hvorfor er der brug for adgangsmodifikatorer?

De bliver nødvendige til store projekter skrevet af titusinder og hundredvis af programmører på samme tid.

Nogle gange er der situationer, hvor en programmør ønsker at opdele en alt for stor metode i dele og flytte en del af koden til hjælpemetoder. Men samtidig ønsker han eller hun ikke, at andre programmører skal kalde disse hjælpemetoder, fordi den tilsvarende kode muligvis ikke fungerer korrekt.

Så de kom med disse adgangsmodifikatorer. Hvis du markerer en hjælpemetode med ordet privat , så kan ingen anden kode end din klasse se din hjælpermetode.



2. staticsøgeord

Nøgleordet staticgør en metode statisk. Vi vil se på, hvad det betyder senere. For nu skal du bare huske et par fakta om statiske metoder.

Fakta 1. En statisk metode er ikke knyttet til noget objekt , men hører i stedet til den klasse, hvori den er erklæret. For at kalde en statisk metode skal du skrive:

ClassName.MethodName()

Eksempler på statiske metoder:

Klassenavn Statisk metodenavn
Thread.sleep() Thread sleep()
Math.abs() Math abs()
Arrays.sort() Arrays sort()

Klassenavnet før navnet på en statisk metode kan udelades, hvis du kalder den statiske metode fra dens klasse . Det er derfor, du ikke behøver at skrive før navnene på hver af de statiske metoder, der kaldes.Solution

Faktum 2. En statisk metode kan ikke få adgang til de ikke-statiske metoder i sin egen klasse. En statisk metode kan kun få adgang til statiske metoder. Som et resultat erklærer vi alle de metoder, vi ønsker at kalde fra metoden, mainstatiske.

Hvorfor? Du vil selv kunne svare på dette spørgsmål, når du begynder at lære OOP og forstår, hvordan statiske metoder fungerer.



3. throwssøgeord

Der er et andet søgeord, som du sikkert har set i en metodeerklæring - nøgleordet throws. I modsætning til adgangsmodifikatorer og nøgleordet staticplaceres dette nøgleord efter metodeparametrene:

public static Type name(parameters) throws Exception
{
  method body
}

Vi vil overveje dets præcise betydning lidt senere, når vi studerer undtagelser.

Men for at berøre det overfladisk, kan vi sige, at en metode, der er markeret med nøgleordet throws, kan give fejl (undtagelser), hvilket betyder forekomster af klassen Exception (og klasser, der arver den). Hvis der kan opstå flere forskellige typer fejl i en klasse, skal du angive hver af dem adskilt med kommaer.


4. mainmetode

Linjen, hvor en metode er erklæret, som indeholder alle modifikatorerne, vil påvirke, hvordan denne metode kaldes fra andre klasser og metoder. Det påvirker typen af ​​resultat, metoden vil returnere og angiver, hvilke fejl der er mulige, mens den kører.

En sådan linje kaldes en metodedeklaration og har følgende generelle format:

access modifier static Type name(parameters) throws exceptions
Generelt format for en metodeerklæring

Hvor access modifiers erstattes af public, protected, private, eller slet ingenting;

hvis metoden er statisk, staticvises nøgleordet (det mangler for ikke-statiske metoder)

Typeer typen af ​​returværdien ( voidhvis der ikke er noget resultat)

Nu forstår du sikkert, hvad alle nøgleordene betyder i erklæringen om metoden main:

public static void main(String[] args) throws Exception
Erklærer mainmetoden

Adgang til main()metoden er mulig fra enhver klasse, som angivet af nøgleordet public.

Metoden er statisk, så den kan kaldes eksplicit som Solution.main().

Metoden maingiver ikke noget resultat. Returtypen er void(ingen type).

Metoden maintager argumenter(!): en række strenge. Og parameternavnet argsantyder 'argumenter' for vores sind. Når programmet starter, kan du sende det argumenter - en række strenge. De vil være indeholdt i args arrayet i main()metoden.

Ubehandlede fejl som Exception(eller dens efterkommere) kan forekomme i main()metoden.