Változó és módszer elrejtése Java-ban
1. Bemutatkozás
Ebben az oktatóanyagban megismerjük a Java nyelven rejlő változót és metódust.
Először megértjük e forgatókönyvek koncepcióját és célját. Ezt követően elmélyülünk a használati esetekben, és megvizsgálunk különböző példákat.
2. Változó rejtőzés
Változó elrejtés akkor történik, amikor egy helyi hatókörű ingatlant deklarálunk, amelynek neve megegyezik a külső hatókörben már meglévővel.
Mielőtt a példákra térnénk át, röviden összefoglaljuk a Java lehetséges változó hatóköreit. A következő kategóriákkal határozhatjuk meg őket:
- helyi változók - deklarálva egy kódrészletben, például módszerek, konstruktorok, bármely göndör zárójelű kódblokkban
- példányváltozók - egy osztály belsejében definiálva, és az objektum példányához tartoznak
- osztály vagy statikus változókat - az osztályban deklaráljuk a statikus kulcsszó. Osztály szintű hatókörrel rendelkeznek.
Most írjuk le a rejtőzködést példákkal, az egyes változókategóriákra.
2.1. A Helyi Erő
Vessünk egy pillantást a HideVariable osztály:
public class HideVariable {private String message = "ez a példány változó"; HideVariable () {String message = "konstruktor helyi változója"; System.out.println (üzenet); } public void printLocalVariable () {String message = "módszer helyi változó"; System.out.println (üzenet); } public void printInstanceVariable () {String message = "módszer helyi változó"; System.out.println (ez az üzenet); }}
Itt van a üzenet 4 különböző helyen deklarált változó. A konstruktor belsejében deklarált helyi változók és a két módszer árnyékolja a példányváltozót.
Teszteljük az objektum inicializálását és a módszerek meghívását:
HideVariable változó = new HideVariable (); változó.printLocalVariable (); változó.printInstanceVariable ();
A fenti kód kimenete:
konstruktor lokális változó metódus lokális változó ez a példány változó
Itt az első 2 hívás lekéri a helyi változókat.
A példányváltozó eléréséhez a helyi hatókörből használhatjuk ez kulcsszó, mint amilyennek látható printInstanceVariable () módszer.
2.2. Bújás és a hierarchia
Hasonlóképpen, ha mind a gyermek, mind a szülő osztálynak van egy azonos nevű változója, a gyermek változója elrejti a szülő elől.
Tegyük fel, hogy megvan a szülő osztály:
public class ParentVariable {String instanceVariable = "szülő változó"; public void printInstanceVariable () {System.out.println (instanceVariable); }}
Ezt követően meghatározzuk a gyermekosztályt:
a ChildVariable nyilvános osztály kiterjeszti ParentVariable {String instanceVariable = "gyermek változó"; public void printInstanceVariable () {System.out.println (instanceVariable); }}
Teszteléséhez inicializáljunk két példányt. Az egyik a szülő osztályával, a másik a gyerekkel, majd hívja meg a printInstanceVariable () módszerek mindegyikükön:
ParentVariable parentVariable = új ParentVariable (); ParentVariable childVariable = new ChildVariable (); parentVariable.printInstanceVariable (); childVariable.printInstanceVariable ();
A kimenet a rejtőzködő tulajdonságot mutatja:
szülő változó gyermek változó
A legtöbb esetben kerülnünk kell azonos nevű változók létrehozását mind a szülő, mind a gyermek osztályokban. Ehelyett megfelelő hozzáférés-módosítót kell használnunk, mint például magán és biztosítson getter / setter módszereket erre a célra.
3. Módszer elrejtése
A módszer elrejtése a java bármely hierarchiai struktúrájában megtörténhet. Amikor a gyermek osztály statikus módszert határoz meg ugyanazzal az aláírással, mint a szülő osztály statikus módszere, akkor a gyermek módszerét elrejti a szülő osztályba tartozó. Ha többet szeretne megtudni a statikus kulcsszó, ez az írás jó kezdetnek számít.
Ugyanezt a példánymódszerekkel kapcsolatos viselkedést nevezzük metódus felülírásra. Ha többet szeretne megtudni a fizetési mód felülbírálásáról, útmutatónk itt található.
Most nézzük meg ezt a gyakorlati példát:
public class BaseMethodClass {public static void printMessage () {System.out.println ("alapstatikus módszer"); }}
BaseMethodClass van egyetlen printMessage () statikus módszer.
Ezután hozzunk létre egy gyermekosztályt ugyanazzal az aláírással, mint az alaposztályban:
public class ChildMethodClass kiterjeszti a BaseMethodClass {public static void printMessage () {System.out.println ("gyermek statikus módszer"); }}
Így működik:
ChildMethodClass.printMessage ();
A kimenet a printMessage () módszer:
gyermek statikus módszer
A ChildMethodClass.printMessage () elrejti a módszert BaseMethodClass.
3.1. Módszer elrejtése vs felülbírálás
A rejtőzés nem úgy működik, mint felülbírálás, mert a statikus módszerek nem polimorfak. Az felülbírálás csak példány metódusokkal történik. Támogatja a késői kötést, így futás közben határozza meg, hogy melyik módszert hívják meg.
Másrészt a módszer rejtése statikusakkal működik. Ezért a fordítás idején kerül meghatározásra.
4. Következtetés
Ebben a cikkben áttekintettük a Java és a módszer elrejtésének fogalmát. Megmutattuk a változó elrejtés és árnyékolás különböző forgatókönyveit. A cikk fontos kiemelése a módszer felülírása és elrejtése is.
Szokás szerint a teljes kód elérhető a GitHubon.