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 private
nyckelordet före en metoddeklaration, sÄ kan metoden bara anropas frÄn samma klass som den deklareras i. Nyckelordet public
tillÄ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. public
modifierare
En metod (eller variabel eller klass) markerad med modifieraren public
kan nĂ„s frĂ„n var som helst i programmet . Detta Ă€r den högsta graden av öppenhet â det finns inga begrĂ€nsningar.
2. private
modifierare
En metod (eller variabel eller klass) mÀrkt med modifieraren private
kan 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. protected
modifierare
Om en metod Àr markerad med protected
modifieraren 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 public
pÄ 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."
static
nyckelord
"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 main
statiska."
"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.
throws
nyckelord
"Det finns ett annat nyckelord som du förmodligen har sett i en metoddeklaration â nyckelordet. throws
Till skillnad frÄn Ätkomstmodifierare och static
nyckelordet 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 throws
kan ge fel (undantag), vilket betyder instanser av Exception
klassen (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
Var access modifiers
ersÀtts av public
, protected
, private
, eller ingenting alls;
om metoden Àr statisk static
visas nyckelordet (det saknas för icke-statiska metoder)
Type
Àr typen av returvÀrde ( void
om 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
"Tja, nu inser jag att Ă„tkomst till main()
metoden Àr möjlig frÄn vilken klass som helst, vilket indikeras av public
nyckelordet. 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 main
metoden tar argument (!). De skickas in som en rad strÀngar."
"Det stÀmmer. Och parameternamnet args
antyder '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 args
i 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 Exception
del 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Ä."
GO TO FULL VERSION