belső osztály a Java – ban / eddig tudtuk, hogy az osztály tagjai változók, metódusok, konstruktorok és inicializáló blokkok.
de az is lehetséges, hogy egy osztály vagy interfész tagja legyen egy osztálynak.
egy osztály deklarált belül egy másik osztály ismert beágyazott osztályok java. A beágyazott osztály hatókörét a zárt osztály (külső osztály) hatóköre köti össze.
tehát, ha a B osztályt az a osztályon belül definiáljuk,akkor a B osztály nem létezhet önállóan az A osztály nélkül.
a beágyazott osztály java hozzáférést biztosít a tagok ( beleértve a privát tagok) a zárt osztály. De a zárt osztálynak nincs hozzáférése a beágyazott osztály tagjaihoz.
az osztály, amely egy másik osztály tagja, lehet statikus vagy nem statikus. A java-ban kétféle beágyazott osztály létezik: statikus és nem statikus.
a statikus módosítóval deklarált tagosztály a java-ban statikus beágyazott osztályként ismert.
a nem statikus tagosztályt belső osztálynak vagy nem statikus beágyazott osztálynak nevezzük. Ez a beágyazott osztály legfontosabb típusa.
ebben az oktatóanyagban csak a Java belső osztályát tanuljuk meg. Később a statikus beágyazott osztályt a további oktatóanyagban tárgyaljuk.
belső osztály Java-ban
a belső osztály java-ban olyan osztály, amelyet egy másik osztály belsejében deklarálnak statikus módosító nélkül. A Java-ban általában nem statikus beágyazott osztályként is ismert. Hozzáférhet a külső osztály összes tagjához (változókhoz és metódusokhoz).
egy belső osztálynak nem lehetnek statikus tagjai. A java belső osztály tagjai lehetnek:
- Példányváltozók
- Példánymódszerek
- konstruktorok
- inicializáló blokk
- belső osztály
a belső osztály szintaxisa
access modifier class OuterClassName { . . . . . . . . . . access modifier class InnerClassName { // Members of the inner class. } // Other members of the outer class.}For example:public class Test { // Here, Test is an outer class. . . . . . . // Inner class public class A { // A is inner class as a member of its outer class. . . . . } }
a belső osztályt tartalmazó osztályt záró vagy külső osztálynak nevezzük. A zárt osztály felső szintű osztály, míg a belső osztály a külső osztály tagja.
a külső és a belső osztály közötti kapcsolat a Has-a kapcsolatot jelenti. A Has-a kapcsolat létrehozza a kapcsolatot két osztály között. A Java-ban összetételnek vagy aggregációnak is nevezik.
ha egy belső osztály egy másik belső osztály záró osztálya, akkor azt belső osztályok fészkelésének nevezzük. A belső osztályok fészkelésére nincs korlátozás.
melyik verzióban vezették be a belső osztályt a Java-ban?
a belső osztályt a Java 1.1 verzióban vezették be az osztályfájlok kezelésére használt JVM módosítása nélkül. Ez teljesen végre a segítségével Java fordító.
Java fordító létrehoz egy külön dot osztály fájlt minden belső osztály nevű külső$Inner.osztály és egy külső osztály nevű külső.osztály. Például egy belső A osztály egy$nevű osztálytesztbe van összeállítva A.class.
ha bármelyik dot osztályfájl neve “$” szimbólumot tartalmaz a közepén, akkor egy belső osztályfájlt mutat. A belső osztályok osztályfájljainak formátuma megegyezik a külső osztályok osztályfájljaival.
ezért a JVM a belső osztályok és a külső osztályok osztályfájljait ugyanúgy kezeli.
a belső osztály jellemzői
a belső osztálynak számos fontos jellemzője van, amelyek a következők:
1. A belső osztálynak ugyanaz a neve lehet, mint a külső osztálynak.
2. A belső osztály hatókörét a külső osztály hatóköre korlátozza.
3. Külső osztályobjektum vagy példány nélkül nincs esély egy meglévő belső osztályobjektumra.
4. A belső osztály közvetlenül hozzáférhet a külső osztály összes változójához és metódusához, beleértve a privátot is.
5. Mivel a belső osztály a külső osztály szabályos tagja, csakúgy, mint az osztály deklarált változói és metódusai.
ezért alkalmazhatunk minden java hozzáférési módosítót, mint például a public, default, protected és private a belső osztályra, hasonlóan az osztály többi tagjához. De a külső vagy normál osztály nem lehet magán vagy védett.
6. Ha a belső osztály változó neve megegyezik a külső osztály változó nevével, akkor a külső osztály változóhoz így férhetünk hozzá. Külső osztálynév.ez.VariableName; itt ez az aktuális külső osztály objektumot jelenti.
7. A Java belső osztály el van rejtve egy másik osztálytól a záró osztályában. Ezért biztonsági mechanizmust biztosít az alkalmazási programban, és csökkenti a program olvashatóságát (megértését).
8. A belső osztály tárgya gyakran a külső osztályában jön létre, és nem hozható létre más osztályokból.
9. Mind a külső, mind a belső osztály objektumok külön memóriahelyeken jönnek létre.
szintaxis a belső osztály objektumának létrehozása Java-ban
egy belső osztály példánya kapcsolatban áll egy külső osztály példányával. Ez a kapcsolat olyan, hogy nem hozhatunk létre egy példányt a belső osztályból a külső osztály példánya nélkül.
ezért egy belső osztályú objektum létrehozásához először létre kell hoznia egy külső osztályú objektumot, amely a belső osztályhoz kötődik. Létrehozhatunk egy belső osztály több objektumát egy külső osztály ugyanazon példányához.
a szintaxis létrehozása egy objektumot a belső osztály a következő:
Syntax: OuterClass.InnerClass innerObject = outerObject.new InnerClass();For example:// First create an object of Outer class Test. Test t = new Test();// Second create an object of inner class A. Test.A innerObj = t.new A();
értsük meg, hogy egy belső osztály példánya hogyan viszonyul egy külső osztály példányához valós idejű példákkal.
valós idejű példa belső osztály
1. Tegyük fel, hogy van egy egyetem. Az egyetem számos tanszéket tartalmaz, mint például elektronika, számítástechnika, elektromos, mechanikus stb.
tegyük fel, hogy holnap, a kormány úgy döntött, hogy bezárja az egyetem miatt illegális tevékenység történik az egyetemen. Ha az egyetem zárva van, az egyetem összes Tanszéke automatikusan bezárul.
ezért mondhatjuk, hogy a tanszékek az egyetemhez kötődnek. Vagyis funkcióik az egyetemhez vannak kötve. Tehát meglévő egyetemi objektum nélkül nincs esély a meglévő tanszéki objektumokra.
mivel a tanszék mindig az egyetemi osztály része. Ezért be kell jelentenünk a tanszék osztályát az egyetemi osztályon belül.
class University { // University is outer class. . . . . . . . class Department { // Department is inner class. . . . . . . . . }}
így egy létező objektumtípus nélkül, ha nincs esély Egy másik típusú objektum létezésére, akkor belső osztályt kell megvalósítanunk.
2. Tegyük fel, hogy van egy autó. Egy autón belül számos fontos egyedi alkatrészre van szükség. Az autó legfontosabb alkotóeleme a motor.
a motort meg kell követelni egy autó készítéséhez. De meglévő autóobjektum nélkül nincs esély a motorobjektum létezésére sem.
mivel a motor mindig fontos része az autónak. Ezért az osztálymotort az osztályautóban kell bejelenteni.
class Car { . . . . . . . . . class Engine { . . . . . . . . . . }}
a fenti két valós idejű példát elmagyarázzuk, hogy megkapjuk a belső osztály alapvető gondolatait. Most a következő példát vesszük a Java API alapján.
3. Mint tudjuk, a Java-ban van egy Térképkoncepció a collections API-ban. A térkép nem más, mint kulcs-érték párok csoportja. Minden kulcs-érték párt egy bejegyzésnek nevezünk. Most egy meglévő map objektum nélkül van-e esély a meglévő belépési objektumra?
a válasz nem, mert a térkép objektumának létezése nélkül a belépési objektum sem létezhet. Ez az oka annak, hogy az interfészbejegyzés a térkép felületen belül van meghatározva.
Interface Map { // Map is an outer interface. . . . . . . . . . Interface Entry { // Entry is an inner interface. . . . . . . . . . . } }
most a fenti valós idejű példából megértetted volna, hogy mikor kell egy belső osztályt használni a Java programozásban.
a belső osztály használata a Java-ban
a belső osztálynak a következő fontos felhasználási módjai vannak a Java-ban.
1. A belső osztály értékes tulajdonság, mert lehetővé teszi számunkra, hogy osztályokat és interfészeket csoportosítsunk egy helyen, amely logikusan egymáshoz tartozik.
2. Segít szabályozni az egyik láthatóságát a másikon belül, hogy jobban olvasható és karbantartható legyen.
3. A java belső osztály legjobb felhasználása, ha funkcionalitása a külső osztályához van kötve. Vagyis létező külső osztályobjektum nélkül nincs esély a meglévő belső osztályobjektumra. Ismerje meg a valós idejű példákat.
4. . A Java belső osztály hasznos a fontos kód biztonságának biztosításához. Például, ha a belső osztályt privátnak nyilvánítjuk, akkor más osztályok számára nem érhető el. Ez azt jelenti, hogy a belső osztályhoz tartozó objektum nem hozható létre más osztályokban.
értsük meg a valós idejű példaprogram segítségével.
tegyük fel, hogy létrehozunk egy osztály BankAcct. Ahhoz, hogy néhány bankszámla adatait, meghatározzuk például változók ‘balance’ és ‘rate’ a kamat az osztályban.
a calInterest() metódus kiszámítja a kamat összegét, és megjeleníti az egyenleg összegét. Nézze meg a következő forráskódot.
class BankAcct { // Balance and Rate of interest. private double bal; private double rate; // Calculating interest and updated balance. void calInterest() { double interest = bal * rate/100; bal += interest; System.out.println("Balance amount = " +bal); }}
amint megfigyeli, hogy nincs biztonság ehhez a kódhoz, mert nem használ semmilyen hozzáférési módosítót a BankAcct osztály előtt.
mivel az Alapértelmezett hozzáférési módosítók alatt van, bármely programozó könnyen létrehozhat egy objektumot ebben az osztályban, és elérheti az osztály tagjait más osztályokon kívülről. Ezért nincs biztonság a BankAcct osztály számára.
például bármely programozó létrehozhat egy másik osztályt. Ő fog létrehozni egy példányát BankAcct osztály és meg tudja változtatni a kamatláb, mint ez:
class Myclass { public static void main(String args ){ BankAcct ba = new BankAcct(); ba.calInterest(11.5); } }
így a calInterest () módszer nagyon érzékeny. Meg kell védeni a kívülállóktól, mert a mérlegszámlákat kívülről bármely más személy frissítheti. Csak a felhatalmazott személynek kell tudnia frissíteni az egyenlegszámlákat.
a calinterest() metódus és a kamatláb biztonságának biztosítása érdekében, ha a calinterest() metódus kódját egy belső osztályba tesszük, és priváttá tesszük, senki sem érheti el őket az osztályon kívülről. Nézd meg a kódot.
class BankAcct { . . . . . . . . private class Interest { private double rate; void calInterest() { double interest = bal * rate/100; bal += interest; System.out.println("Balance = " +bal); } }}
most a kérdés az, hogyan lehet elérni a belső osztályt?
a belső osztály eléréséhez létrehozunk egy contact () metódust a külső osztályon belül. Inside contact() metódus, létrehozunk egy belső osztály objektumot, és hozzáférhetünk annak tagjaihoz.
egy hitelesítési bank személy kölcsönhatásba léphet a belső osztály hívásával contact() módszer. Amikor a contact() metódus meghívásra kerül, jelszóval lesz ellenőrizve, majd képes lesz használni a belső osztályt és hozzáférni hozzá.
így egy belső osztály biztonsági mechanizmust biztosíthat a Java fontos kódjához.
a belső osztály típusai a Java-ban
deklaráció és viselkedés alapján alapvetően négyféle belső osztály létezik a Java-ban. Ezek a következők:
- normál vagy szabályos belső osztály
- módszer helyi belső osztály
- névtelen belső osztály
- statikus beágyazott belső osztály
ebben az oktatóanyagban röviden meg fogjuk érteni mindegyiket.
1. Normál vagy szabályos belső osztály: egy másik osztályon belül és a metóduson kívül létrehozott osztályt statikus módosító nélkül reguláris vagy normál belső osztálynak nevezünk.
2. Módszer helyi belső osztály: a külső osztály módszerén belül deklarált osztályt nevezzük módszer helyi belső osztály.
3. Névtelen belső osztály: A név nélkül deklarált osztályt anonim belső osztálynak nevezzük.
4. Statikus beágyazott belső osztály: az osztályon belüli statikus módosítóval deklarált osztályt statikus beágyazott belső osztálynak nevezzük. Felső szintű beágyazott osztályként is ismert. Csak a külső osztály statikus tagjaihoz férhet hozzá.
megjegyzés: a reguláris, metódus-lokális és anonim belső osztályok nem statikus beágyazott osztályok.
a belső osztály előnyei
alapvetően a belső osztály öt előnye van a java-ban. Ezek a következők:
1. A belső osztály lehetőséget ad arra, hogy az osztályokat és interfészeket egy olyan helyre csoportosítsuk, amely logikusan egymáshoz tartozik.
2. Közvetlenül hozzáférhet a külső osztály összes változójához és metódusához, beleértve a private-t is.
3. Arra használják, hogy dolgozzon ki több olvasható és karbantartható kódot.
4. Kevesebb kódot kell írni.
5. Növeli a kapszulázást.
különbség a beágyazott osztály és a belső osztály között a Java-ban
a beágyazott osztály egy olyan osztály, amelyet egy másik osztályon belül definiálnak. A beágyazott osztályoknak két típusa van: statikus és nem statikus. A nem statikus beágyazott osztály a belső osztály.
remélem, hogy ez a bemutató lefedte a Java belső osztályának minden fontos jellemzőjét valós idejű példaprogramokkal. Remélem, hogy megértette a belső osztály Java-ban történő használatának alapötletét.
köszönöm az olvasást!!!Következő ++ tag belső osztály Jávában
ons Előző Következő ⇒