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.