Et foredragsuddrag med en mentor som en del af Codegym University-kurset. Tilmeld dig hele kurset.


"Hilsen, Amigo! Jeg hører, du allerede har en god forståelse for metoder?"

"Hej, Rishi. Ja, jeg har allerede skåret mig igennem lærerens trick. Jeg vil sige, at det ikke var så slemt, men du vil sige til mig," Nej, nej! Du har ikke fundet ud af noget. '"

"Du har tydeligvis brugt for meget tid på at chatte med visse lærere, sandsynligvis med Diego. I hvert fald... Jeg håber stadig, at du forstår metoder godt nok. I dag skal jeg trods alt lære dig nogle magiske ord, der hjælper med at afgrænse metoder indflydelsessfærer."

"Lyder spændende."

"Faktisk er det hele enkelt. 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 nøgleordet privatefø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. Her er en komplet tabel:

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

"Og her er en komplet forklaring af adgangsmodifikatorerne:

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 modifikatoren 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."

"Interessant, men jeg er ikke sikker på, om jeg umiddelbart kan placere disse modifikatorer alle de rigtige steder.

"Du vil nå dertil gradvist. Ingen grund til at bekymre dig på forhånd. Indtil du når slutningen af ​​Java Syntax-questen, kan du bruge modifikatoren publicpå alle dine metoder (såvel som klasser og instansvariabler). Du skal bruge andre modifikatorer, når vi begynder aktivt at lære OOP."

"Kan du forklare mere detaljeret, hvorfor adgangsmodifikatorer er nødvendige?"

"De bliver nødvendige for store projekter skrevet af ti og hundredevis 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 fungerer muligvis ikke korrekt."

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

"Jeg tror, ​​jeg forstår."

staticsøgeord

"Der er et andet interessant søgeord. Det er static. Ikke overraskende gør det metoder statiske."

"Hvad betyder det?"

"Jeg fortæller dig mere om det senere. Bare rolig. For nu skal du bare prøve at 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, som vi ønsker at kalde fra metoden mainfor statiske."

"Hvorfor det?"

"Du vil selv svare på dette spørgsmål, når du begynder at lære OOP og forstår, hvordan statiske metoder fungerer. Indtil da, stol bare på mig.

throwssøgeord

"Der er et andet søgeord, som du sikkert har set i en metodeerklæring - søgeordet throws. I modsætning til adgangsmodifikatorer og staticsøgeordet er dette søgeord placeret efter metodeparametrene:

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

"Og hvad betyder det?"

"Jeg må endnu en gang fortælle dig, at du vil lære dets sande formål senere, når vi studerer undtagelser (i niveau 15).

Men for at berøre det overfladisk, kan vi sige, at en metode, der er markeret med nøgleordet, throwskan give fejl (undtagelser), hvilket betyder forekomster af Exceptionklassen (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."

"Lyder mystisk og uforståeligt! Jeg bliver nødt til at vente på niveau 14."

hovedmetode

"Lad os nu se nærmere på hovedmetoden. Du forstår allerede, at linjen, hvor en metode er erklæret, som indeholder alle modifikatorerne, vil påvirke, hvordan denne metode kaldes fra andre klasser og metoder. Derudover påvirker det typen af resultat vil metoden returnere og angiver, hvilke fejl der er mulige, mens den kører.

"En sådan linje kaldes en metodeerklæring og har følgende generelle format:

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

Hvor access modifierserstattes 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 har du en meget bedre forståelse af, hvad alle disse ord betyder i erklæringen om metoden main:

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

"Nå, nu indser jeg, at adgang til main()metoden er mulig fra enhver klasse, som angivet af publicnøgleordet. Metoden er statisk, så den kan kaldes eksplicit som Solution.main()."

"Hvilket resultat returnerer main()metoden?"

"Ingen overhovedet! Resultattypen er void. Det er lidt ligesom en tom type, en pladsholder."

"Hvad står main()der i parentesen?"

"Hmm... Det viser sig, at mainmetoden tager argumenter (!). De sendes ind som en række strenge."

"Det er rigtigt. Og parameternavnet argsantyder 'argumenter' til vores sind. Når programmet starter, kan du sende det argumenter - en række strenge. De vil være indeholdt i arrayet argsi main()metoden."

"Wow! Jeg undrede mig over det her, da jeg så det første gang, men så vænnede jeg mig til det og begyndte at skrive parameterlisten uden at tænke."

"Vi har alle været der. Endelig Exceptionkan der opstå uhåndterede fejl som (eller dens efterkommere) i main()metoden. Det ved vi takket være den throws Exceptiondel af erklæringen."

"Tak, Rishi. Jeg forstod ikke alt, men det her var interessant."

"Du er velkommen. Gradvist vil du komme til at forstå alle disse subtile punkter, det er jeg sikker på."