Előadásrészlet egy mentorral a Codegym University tanfolyam részeként. Jelentkezzen a teljes tanfolyamra.


"Üdvözlöm, Amigo! Hallom, már jól értesz a módszerekhez?"

"Szia, Rishi. Igen, már átvágtam a tanári trükkön. Azt mondanám, hogy nem volt olyan rossz, de azt mondod: "Nem, nem! Nem találtál ki semmit. '"

"Nyilvánvalóan túl sok időt töltesz azzal, hogy bizonyos tanárokkal csevegj, valószínűleg Diego-val. Mindenesetre... továbbra is remélem, hogy elég jól értesz a módszerekhez. Végül is ma megtanítok neked néhány varázsszót, amelyek segítenek meghatározni a módszereket. ' befolyási övezetek."

– Érdekesen hangzik.

"Valójában minden egyszerű. Minden metódus előtt a programozók megadhatnak úgynevezett hozzáférés-módosítókat. Ezek közé tartoznak a következő kulcsszavak: public, protected, private.

"Ezekkel a hozzáférés-módosítókkal korlátozhatja más osztályok hozzáférését egy metódushoz.

"Például, ha a privatekulcsszót egy metódus deklarációja elé írjuk, akkor a metódus csak ugyanabból az osztályból hívható meg, amelyben deklarálva van. A publickulcsszó bármely osztály bármely metódusából lehetővé teszi a megjelölt metódus elérését.

Összesen 3 ilyen módosító létezik, de egy metódushoz 4 hozzáférési típus létezik. Ugyanis a hozzáférés módosító hiánya is jelent valamit. Itt egy teljes táblázat:

Hozzáférés innen:...
Módosítók Bármilyen osztály Gyermek osztály A csomagja Az osztálya
public Igen Igen Igen Igen
protected Nem Igen Igen Igen
nincs módosító Nem Nem Igen Igen
private Nem Nem Nem Igen

"És itt van a hozzáférés-módosítók teljes magyarázata:

1. publicmódosító

A módosítóval jelölt metódus (vagy változó vagy osztály) a program bármely pontjárólpublic elérhető . Ez a nyitottság legmagasabb foka – nincsenek korlátozások.

2. privatemódosító

A módosítóval megjelölt metódus (vagy változó vagy osztály) privatecsak abból az osztályból érhető el , ahol deklarálva van . Az összes többi osztálynál a megjelölt metódus (vagy változó) láthatatlan. Mintha nem is létezne. Ez a korlátozás legmagasabb szintje – csak a saját osztálya.

3. Nincs módosító (alapértelmezett módosító)

Ha egy metódus (vagy változó) nincs megjelölve semmilyen módosítóval, akkor az „alapértelmezett módosítóval” rendelkezik. Az ezzel a módosítóval rendelkező változók vagy metódusok (azaz egyikkel sem) láthatók a csomag minden osztálya számára, amelyben deklarálva vannak . És csak nekik. Ezt a módosítót néha -nak is nevezik package-private, utalva arra, hogy a változókhoz és metódusokhoz való hozzáférés nyitva áll a teljes csomag számára, amelyben az osztályuk található.

4. protectedmódosító

Ha egy metódus meg van jelölve a módosítóval protected, akkor ugyanabból az osztályból, ugyanabból a csomagból és leszármazottakból (olyan osztályokból, amelyek öröklik azt az osztályt, amelyben a metódus deklarálva van) érhető el. Ezt a témát részletesebben elemezzük a Java Core küldetésben."

"Érdekes, de nem vagyok benne biztos, hogy azonnal a megfelelő helyre tudom-e helyezni ezeket a módosítókat.

"Fokozatosan fog eljutni oda. Nem kell előre aggódnia. Amíg el nem éri a Java Syntax küldetés végét, használhatja a publicmódosítót az összes metódusánál (valamint az osztályoknál és a példányváltozóknál). Szüksége lesz a más módosítók, amikor elkezdjük aktívan tanulni az OOP-t."

– Kifejtenéd részletesebben, hogy miért van szükség hozzáférésmódosítókra?

„Szükségessé válnak nagy projektekhez, amelyeket több tíz és több száz programozó írt egyszerre.

"Néha vannak olyan helyzetek, amikor egy programozó egy túl nagy metódust akar részekre bontani, és a kód egy részét áthelyezni helper metódusokba. Ugyanakkor nem akarja, hogy más programozók hívják ezeket a helper metódusokat, mert Előfordulhat, hogy a megfelelő kód nem működik megfelelően."

"Tehát kitalálták ezeket a hozzáférésmódosítókat. Ha egy helper metódust a private szóval jelölsz meg , akkor az osztályodon kívül más kód nem láthatja a helper metódusodat."

"Azt hiszem értem."

statickulcsszó

"Van egy másik érdekes kulcsszó. Ez az static. Nem meglepő módon statikussá teszi a módszereket."

"Az mit jelent?"

"Később mesélek róla többet. Ne aggódjon. Egyelőre próbáljon meg emlékezni néhány tényre a statikus módszerekről.

1. tény. A statikus metódus nem kapcsolódik egyetlen objektumhoz sem, hanem abba az osztályba tartozik, amelyben deklarálva van. Statikus metódus hívásához a következőket kell írnia:

ClassName.MethodName()

Példák statikus módszerekre:

Osztály név Statikus metódusnév
Thread.sleep() Thread sleep()
Math.abs() Math abs()
Arrays.sort() Arrays sort()

A statikus metódus neve előtti osztálynév elhagyható, ha a statikus metódust az osztályából hívja meg. Ezért nem kell az egyes meghívott statikus metódusok neve elé írni.Solution

2. tény. Egy statikus metódus nem férhet hozzá saját osztályának nem statikus metódusaihoz. A statikus metódusok csak statikus metódusokhoz férhetnek hozzá. Ennek eredményeként mainstatikussá nyilvánítjuk az összes metódust, amelyet a metódusból meg akarunk hívni."

"Miert van az?"

"Te magad fogod megválaszolni ezt a kérdést, amikor elkezded tanulni az OOP-t, és megérted, hogyan működnek a statikus módszerek. Addig bízz bennem.

throwskulcsszó

"Van egy másik kulcsszó, amelyet valószínűleg már látott a metódus deklarációjában – ez a throwskulcsszó. A hozzáférés-módosítókkal és a kulcsszóval ellentétben ez a kulcsszó a metódusparaméterek utánstatic kerül elhelyezésre :

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

– És ez mit jelent?

"Még egyszer el kell mondanom, hogy a valódi célját később, amikor a kivételeket tanulmányozzuk (a 15. szinten), megtudod.

De ha felületesen érintjük, azt mondhatjuk, hogy a kulcsszóval jelölt metódus throwshibákat (kivételeket) dobhat, vagyis az Exceptionosztály (és az azt öröklő osztályok) példányait. Ha egy osztályban többféle hiba is előfordulhat, akkor mindegyiket vesszővel elválasztva kell felsorolni."

"Rejtélyesen és érthetetlenül hangzik! Várnom kell a 14. szintre."

fő módszer

"Most nézzük meg közelebbről a fő metódust. Ön már tudja, hogy az a sor, ahol egy metódus deklarálva van, és amely tartalmazza az összes módosítót, hatással lesz arra, hogyan hívják meg ezt a metódust más osztályokból és metódusokból. Ezenkívül befolyásolja a metódus típusát is. eredményeként a metódus visszatér, és jelzi, milyen hibák lehetségesek futás közben.

"Az ilyen sort metódusdeklarációnak nevezik , és a következő általános formátuma van:

access modifier static Type name(parameters) throws exceptions
Metódus deklaráció általános formátuma

Ahol access modifiersa helyére public, protected, private, vagy semmi;

ha a metódus statikus, akkor staticmegjelenik a kulcsszó (nem statikus módszereknél hiányzik)

Typea visszatérési érték típusa ( voidha nincs eredmény)

"Most már sokkal jobban megérted, mit jelentenek ezek a szavak a mainmódszer deklarációjában:

public static void main(String[] args) throws Exception
mainA módszer deklarálása

"Nos, most már rájöttem, hogy a main()metódushoz bármely osztályból hozzá lehet férni, amint azt a publickulcsszó is jelzi. A metódus statikus, tehát kifejezetten nek nevezhető Solution.main()."

"Milyen eredményt main()ad vissza a metódus?"

"Egyáltalán nincs! Az eredmény típusa void: . Olyan, mint egy üres típus, egy helyőrző."

– Mi main()van a zárójelben?

"Hmm... Kiderült, hogy a mainmetódus argumentumokat (!) vesz fel. Ezeket karakterláncok tömbjeként adják át."

"Így van. A paraméter neve pedig args"argumentumokat" sugall az elménkben. Amikor a program elindul, argumentumokat adhat át neki – karakterláncok tömbjét. Ezek a metódus argstömbjében lesznek benne main()."

"Hűha! Ezen tűnődtem, amikor először láttam, de aztán megszoktam, és gondolkodás nélkül elkezdtem írni a paraméterlistát."

"Mindannyian ott voltunk. Végül Exceptiona metódusban előfordulhatnak olyan kezeletlen hibák, mint (vagy annak leszármazottai) . Ezt a nyilatkozat main()azon részének köszönhetően tudjuk ."throws Exception

"Köszönöm, Rishi. Nem értettem mindent, de ez érdekes volt."

– Szívesen. Fokozatosan meg fogod érteni ezeket a finom dolgokat, ebben biztos vagyok.