Módosítók java - áttekintés és példákkal illusztrálva
Hello mindenkinek. Ma megnézzük módosítókat a Java.
Módosítót - egy nyelvet kulcsszó, ami semmiképpen sem változtat értelmében egyes meghatározások (például osztály vagy módszer). Között módosítók különíteniük hozzáférési módosítók csoport:
- nyilvánosság számára;
- védett;
- Az alapértelmezett módosítót - ez az úgynevezett csomag;
- privát.
A hozzáférési módosítók, írok részletesen a cikket OOP Java. És most ez a terv:
Módosítók osztályok (osztály módosítók)
A módosító elvont. Alkalmazott, hogy az osztály, azt mondta, hogy az osztály (vagy úgy tekintendő,) hiányos, és hivatkozással a „teljes” az osztály van hozzárendelve az örökösök. Kísérlet példányosíthat ilyen osztály fog eredményezni egy fordítási hiba, például:
Összeállítása ezt a kódot kap egy hiba: Expression elvont; Azt nem lehet példányai.
Megjegyzés az absztrakt osztály nem feltétlenül kell, hogy az absztrakt módszereket.
Az utolsó módosító az osztály azt mondta, hogy nem lehet örökölni tőle.
Kísérlet lefordítani a kódot hibát eredményez: nem örökölnek végső példa.
Nyilvánvaló, hogy az osztály nem nyilvánítható egyaránt végleges és elvont.
Beágyazott osztályok Java lehet nyilvánítani statikus. például:
Ebben az esetben az osztály neve statikus beágyazott osztály és hozzáfér a statikus mezők és módszerek kialakítása osztályban.
Módosítók módszerek (módszer módosítók)
A módszer lehetőséget egy kicsit. Methods in Java lehet nyilvánítani elvont, a végső, statikus, strictfp (lásd a cikk végén), natív, szinkronizált.
Módszer absztrakt módosító lehet deklarálni eljárás tag (member módszer) belül egy absztrakt osztály (vagy interfész). Ebben az esetben az eljárás test hiányzik, és a végrehajtás biztosítható származtatott osztály. Ha ezt a módszert nyilvánították elvont egy adott osztály, akkor kap egy fordítási hibát.
Módszerek deklarált végső módosító nem felülbírálni leszármazottai.
A példában, hiba történik fordításkor: a () a Clazz.SubClass nem tudja felülírni a () a Clazz; felülírt módszer végleges
A módszer a statikus módosító tartozik az osztály egésze és nem a példányok, azaz, hogy nem kerül át az objektumra ezt. Ez a módszer lehet hivatkozni az osztály nevét. Például:
Végül a szinkronizált módosítót a módszer azt mondja, hogy kivégzés előtt kell rögzíteni tárgy monitor (egy nem statikus módszer), vagy a monitor társított osztály (statikus módszer).
Íme egy példa a kódot, amely bizonyítja a leírását szinkronizált módszerekkel. Capture the monitor is használja a kulcsszó szinkronizálva.
Módosítók mezők (mező módosítók)
Térjünk át a következő területeken osztályok. Ezek leírható ilyen módosítók, mint egy statikus, a végső, tranziens, illékony.
Ha egy osztály mező bejelentett állandó. akkor nem lesz pontosan egy mező, függetlenül attól, hogy sok esetben az osztály jön létre, akkor is, ha nem jön létre egy példányt. Az ilyen mezők nevezzük statikus osztály változók szintje (osztály változó).
Field végső módosító nem változik az értéke az inicializálás után. Ez vonatkozik mind a statikus és nem statikus mezők (tag mezők).
Összeállításakor a kód hibát okoznak: nem lehet értéket rendelni a végső változat állandó.
Annak jelzésére, hogy közben a sorszámozás a tárgy mezőt figyelmen kívül kell hagyni, használja a tranziens módosítót. Jellemzően, az ilyen mezők nem része a belső állapotát az objektum vagy tárolt közbenső értékek.
Az illékony módosítót minden egy kicsit bonyolultabb. Megpróbálom elmagyarázni könnyebb. A Java szálak tárolhatja értékeit néhány változót néhány helyi kontextusban. Ha az egyik szál értékét megváltoztatja egy olyan területre, majd egy másik szál nem tud róla (mert ez tartja a másolat). Mezők esetében illékony módosító garancia arra, hogy minden szál mindig lehet látni a jelenlegi változó értékét.
Módosítók kapcsolódó interfészek
Az interfész lehet alkalmazni, ugyanazt a módosítókat az osztályok, kivéve természetesen a végső. A felület elvont alapértelmezés szerint. Abban az esetben, beágyazott interface statikus kulcsszó elhagyható - ez minden esetben lesz állandó.
Interface módszerek umlochaniyu nyilvános elvont, ezért rájuk nem vonatkoznak módosítók végleges, statikus és őshonos. Szinkronizált, ők is nem lehet, mert a felület nem lehet példányai.
Fields alapértelmezett felület egy public static final, ezért el kell indítani.
Összefoglalva, a következő két darab kódot azonosak:
Nos, az alapértelmezett - a legújabb fejlesztés területén módosítók :). interface módszer, amely meg van jelölve alapértelmezés nyújt végrehajtását az alapértelmezett módszer. Például:
Ez a kód lefordul hiba nélkül a Java 1.8 verzió.
Más kontextusban használat módosítók
Két lehetőség van, ahol a módosítók használhatók.
Az első lehetőség - ez a helyi változó lehet nyilvánítani véglegesnek. Ebben az esetben a változó értéke nem lehet változtatni, hogy az eljárás az inicializálás után
A második lehetőség - ez a statikus inicializáló blokk, amelynek végrehajtására, amikor az osztály betöltésekor:
Végül térjünk vissza módosítót strictfp. strictfp módosító osztály és interfész rámutat arra a tényre, hogy az összes osztály / interfész módszerek strictfp. De ha a módszert írja le, mint strictfp (közvetlenül vagy közvetve), majd a JVM garantálja, hogy a számítási eredmények a kifejezések, és a kettős float módszerén belül ugyanaz lesz az összes platformon.
Ez a módosító-ben vezették be a Java verziót 1.2. De most minden modern fordítóprogramok magukat letenni ezt a módosítót, úgyhogy a hordozhatóság a programokat lehet nyugodt.