Ett förelÀsningsutdrag med en mentor som en del av Codegym University-kursen. AnmÀl dig till hela kursen.


"HÀlsningar, Amigo! Jag hör att du redan har bra koll pÄ metoder?"

"Hej, Rishi. Ja, jag har redan klippt mig igenom det dÀr lÀrarens trick. Jag skulle sÀga att det inte var sÄ illa, men du kommer att sÀga till mig," Nej, nej! Du har inte kommit pÄ nÄgonting. '"

"Du har helt klart spenderat för mycket tid pÄ att chatta med vissa lÀrare, förmodligen med Diego. Hur som helst... Jag hoppas fortfarande att du förstÄr metoder tillrÀckligt bra. Trots allt, idag ska jag lÀra dig nÄgra magiska ord som hjÀlper dig att avgrÀnsa metoder "inflytandesfÀrer."

"LÄter spÀnnande."

"I sjÀlva verket Àr allt enkelt. Före varje metod kan programmerare specificera sÄ kallade Ätkomstmodifierare. Dessa inkluderar följande nyckelord: public, protected, private.

"Dessa Ätkomstmodifierare lÄter dig begrÀnsa andra klassers Ätkomst till en metod.

"Om du till exempel skriver privatenyckelordet före en metoddeklaration, sÄ kan metoden bara anropas frÄn samma klass som den deklareras i. Nyckelordet publictillÄter Ätkomst till den markerade metoden frÄn vilken metod som helst av vilken klass som helst.

Det finns totalt 3 sÄdana modifierare, men det finns 4 typer av Ätkomst till en metod. Detta beror pÄ att frÄnvaron av en Ätkomstmodifierare ocksÄ betyder nÄgot. HÀr Àr en komplett tabell:

TillgÄng frÄn...
Modifierare Vilken klass som helst Barnklass Dess paket Dess klass
public Ja Ja Ja Ja
protected Nej Ja Ja Ja
ingen modifierare Nej Nej Ja Ja
private Nej Nej Nej Ja

"Och hÀr Àr en komplett förklaring av Ätkomstmodifierarna:

1. publicmodifierare

En metod (eller variabel eller klass) markerad med modifieraren publickan nĂ„s frĂ„n var som helst i programmet . Detta Ă€r den högsta graden av öppenhet – det finns inga begrĂ€nsningar.

2. privatemodifierare

En metod (eller variabel eller klass) mÀrkt med modifieraren privatekan endast nÄs frÄn samma klass dÀr den deklareras . För alla andra klasser Àr den markerade metoden (eller variabeln) osynlig. Det Àr som om det inte finns. Detta Àr den högsta begrÀnsningsnivÄn - bara sin egen klass.

3. Ingen modifierare (standardmodifierare)

Om en metod (eller variabel) inte Àr markerad med nÄgon modifierare, anses den ha "standardmodifieraren". Variabler eller metoder med den modifieraren (dvs med ingen alls) Àr synliga för alla klasser i paketet dÀr de Àr deklarerade . Och bara till dem. Denna modifierare kallas ocksÄ ibland package-private, vilket antyder att Ätkomst till variabler och metoder Àr öppen för hela paketet dÀr deras klass finns.

4. protectedmodifierare

Om en metod Àr markerad med protectedmodifieraren kan den nÄs frÄn samma klass, samma paket och avkomlingar (klasser som Àrver klassen dÀr metoden deklareras). Vi kommer att analysera detta Àmne mer i detalj i Java Core-uppdraget."

"Intressant, men jag Àr inte sÀker pÄ om jag omedelbart kan placera dessa modifierare pÄ alla rÀtt stÀllen.

"Du kommer dit gradvis. Du behöver inte oroa dig i förvÀg. Tills du nÄr slutet av Java Syntax-uppdraget kan du anvÀnda modifieraren publicpÄ alla dina metoder (liksom klasser och instansvariabler). Du behöver andra modifierare nÀr vi aktivt börjar lÀra oss OOP."

"Kan du förklara mer i detalj varför Ätkomstmodifierare behövs?"

"De blir nödvÀndiga för stora projekt skrivna av tiotals och hundratals programmerare samtidigt.

"Ibland finns det situationer nÀr en programmerare vill dela upp en alltför stor metod i delar och flytta en del av koden till hjÀlpmetoder. Men samtidigt vill han eller hon inte att andra programmerare ska kalla dessa hjÀlpmetoder, eftersom motsvarande kod kanske inte fungerar korrekt."

"SÄ de kom pÄ dessa Ätkomstmodifierare. Om du markerar en hjÀlpmetod med ordet privat kan ingen annan kod Àn din klass se din hjÀlpmetod."

"Jag tror jag förstÄr."

staticnyckelord

"Det finns ett annat intressant nyckelord. Det Àr static. Föga överraskande gör det metoder statiska."

"Vad betyder det?"

"Jag ska berÀtta mer om det senare. Oroa dig inte. För nu, försök bara komma ihÄg ett par fakta om statiska metoder.

Fakta 1. En statisk metod Àr inte kopplad till nÄgot objekt, utan tillhör istÀllet den klass som den deklareras i. För att anropa en statisk metod mÄste du skriva:

ClassName.MethodName()

Exempel pÄ statiska metoder:

Klassnamn Statisk metodnamn
Thread.sleep() Thread sleep()
Math.abs() Math abs()
Arrays.sort() Arrays sort()

Klassnamnet före namnet pÄ en statisk metod kan utelÀmnas om du anropar den statiska metoden frÄn dess klass . Det Àr dÀrför du inte behöver skriva före namnen pÄ var och en av de statiska metoder som anropas.Solution

Fakta 2. En statisk metod kan inte komma Ät de icke-statiska metoderna i sin egen klass. En statisk metod kan bara komma Ät statiska metoder. Som ett resultat deklarerar vi alla metoder som vi vill anropa frÄn metoden mainstatiska."

"Varför Àr det sÄ?"

"Du kommer sjÀlv svara pÄ den hÀr frÄgan nÀr du börjar lÀra dig OOP och förstÄr hur statiska metoder fungerar. Tills dess, lita bara pÄ mig.

throwsnyckelord

"Det finns ett annat nyckelord som du förmodligen har sett i en metoddeklaration — nyckelordet. throwsTill skillnad frĂ„n Ă„tkomstmodifierare och staticnyckelordet placeras detta nyckelord efter metodparametrarna:

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

"Och vad betyder det?"

"Än en gĂ„ng mĂ„ste jag berĂ€tta för dig att du kommer att lĂ€ra dig dess sanna syfte senare, nĂ€r vi studerar undantag (i nivĂ„ 15).

Men för att beröra det ytligt kan vi sÀga att en metod markerad med nyckelordet throwskan ge fel (undantag), vilket betyder instanser av Exceptionklassen (och klasser som Àrver den). Om flera olika typer av fel kan uppstÄ i en klass, mÄste du lista var och en av dem separerade med kommatecken."

"LÄter mystiskt och obegripligt! Jag fÄr vÀnta pÄ nivÄ 14."

huvudmetod

"LÄt oss nu titta nÀrmare pÄ huvudmetoden. Du förstÄr redan att raden dÀr en metod deklareras, som innehÄller alla modifierare, kommer att pÄverka hur denna metod anropas frÄn andra klasser och metoder. Dessutom pÄverkar det typen av resultatet kommer metoden att returnera och indikerar vilka fel som Àr möjliga nÀr den körs.

"En sÄdan rad kallas en metoddeklaration och har följande allmÀnna format:

access modifier static Type name(parameters) throws exceptions
AllmÀnt format för en metoddeklaration

Var access modifiersersÀtts av public, protected, private, eller ingenting alls;

om metoden Àr statisk staticvisas nyckelordet (det saknas för icke-statiska metoder)

TypeÀr typen av returvÀrde ( voidom det inte finns nÄgot resultat)

"Nu har du en mycket bÀttre förstÄelse för vad alla dessa ord betyder i deklarationen av metoden main:

public static void main(String[] args) throws Exception
Deklarerar mainmetoden

"Tja, nu inser jag att Ätkomst till main()metoden Àr möjlig frÄn vilken klass som helst, vilket indikeras av publicnyckelordet. Metoden Àr statisk, sÄ den kan uttryckligen kallas som Solution.main()."

"Vilket resultat ger main()metoden tillbaka?"

"Ingen alls! Resultattypen Àr void. Det Àr ungefÀr som en tom typ, en platshÄllare."

"Vad main()stÄr det inom parentes?"

"Hmm... Det visar sig att mainmetoden tar argument (!). De skickas in som en rad strÀngar."

"Det stĂ€mmer. Och parameternamnet argsantyder 'argument' för vĂ„ra sinnen. NĂ€r programmet startar kan du skicka det argument — en array av strĂ€ngar. De kommer att finnas i arrayen argsi main()metoden."

"Wow! Jag undrade över det hÀr nÀr jag sÄg det första gÄngen, men sedan vÀnde jag mig vid det och började skriva parameterlistan utan att tÀnka."

"Vi har alla varit dĂ€r. Äntligen kan obehandlade fel som Exception(eller dess Ă€ttlingar) uppstĂ„ i main()metoden. Vi vet detta tack vare den throws Exceptiondel av deklarationen."

"Tack, Rishi. Jag förstod inte allt, men det hÀr var intressant."

"Du Àr vÀlkommen. SÄ smÄningom kommer du att förstÄ alla dessa subtila punkter, det Àr jag sÀker pÄ."