indre klasse i Java / indtil videre har vi kendt, at medlemmerne af klassen er variabler, metoder, konstruktører og initialiseringsblokke.
men det er også muligt at have en klasse eller en grænseflade som medlem af en klasse.
en klasse erklæret inde i en anden klasse er kendt som indlejrede klasser i java. Omfanget af en indlejret klasse er bundet af omfanget af dens omsluttende klasse (ydre klasse).
hvis klasse B således er defineret inden for klasse A, kan Klasse B ikke eksistere uafhængigt uden klasse A. Her er klasse A ydre eller omsluttende klasse, og klasse B er indlejret klasse.
en indlejret klasse i java har adgang til medlemmerne ( inklusive private medlemmer) af dens omsluttende klasse. Men den omsluttende klasse har ikke adgang til medlemmerne af den indlejrede klasse.
den klasse, der er medlem af en anden klasse, kan være enten statisk eller ikke-statisk. Med andre ord er der to typer indlejrede klasser i java: statisk og ikke-statisk.
medlemsklassen, der er erklæret med en statisk modifikator, er kendt som statisk indlejret klasse i java.
medlemsklassen, der er ikke-statisk, er kendt som indre klasse eller ikke-statisk indlejret klasse. Det er den vigtigste type indlejret klasse.
i denne tutorial lærer vi kun indre klasse i Java. Senere vil vi diskutere statisk indlejret klasse i den videre vejledning.
indre klasse i Java
en indre klasse i java er en klasse, der erklæres inde i en anden klasse uden statisk modifikator. Det er også almindeligt kendt som en ikke-statisk indlejret klasse i Java. Det kan få adgang til alle medlemmer (variabler og metoder) i sin ydre klasse.
en indre klasse kan ikke have nogen form for statiske medlemmer. Medlemmerne af java indre klasse kan være:
- instansvariabler
- Instansmetoder
- konstruktører
- Initialiseringsblok
- indre klasse
syntaks for Indre klasse
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. . . . . } }
den klasse, der holder den indre klasse, kaldes omsluttende eller ydre klasse. Den omsluttende klasse er en klasse på øverste niveau, mens den indre klasse er medlem af den ydre klasse.
forholdet mellem ydre klasse og indre klasse repræsenterer har-et forhold. A Has-a-Forhold etablerer forholdet mellem to klasser. Det er også kendt som sammensætning eller aggregering i Java.
når en indre klasse er en omsluttende klasse for en anden indre klasse, kaldes det indlejring af indre klasser. Der er ingen grænse for indlejring af indre klasser.
i hvilken version indre klasse blev introduceret i Java?
Inner class blev introduceret i Java 1.1-versionen uden ændringer i JVM, der blev brugt til at håndtere klassefilerne. Det er helt implementeret ved hjælp af Java compiler.
Java compiler genererer en separat dot class-fil for hver indre klasse med navnet Outer$Inner.klasse og for en ydre klasse ved navn ydre.klasse. For eksempel kompileres en indre klasse A i en klassetest med navnet Test$A.class.
hvis et dot-klassefilnavn indeholder ” $ ” – symbol i midten, viser det en indre klassefil. Formatet for klassefilerne for indre klasser har det samme som klassefiler for de ydre klasser.
derfor behandler JVM klassefilerne for indre klasser og de ydre klasser det samme.
funktioner i indre klasse
der er flere vigtige træk ved en indre klasse, der er som følger:
1. En indre klasse kan have samme navn som den ydre klasse.
2. Omfanget af den indre klasse er afgrænset af omfanget af dens ydre klasse.
3. Uden eksisterende et ydre klasseobjekt eller forekomst vil der ikke være nogen chance for et eksisterende indre klasseobjekt.
4. En indre klasse kan direkte få adgang til alle variabler og metoder i den ydre klasse inklusive privat.
5. Da den indre klasse er et regelmæssigt medlem af den ydre klasse ligesom deklarerede variabler og metoder i klassen.
derfor kan vi anvende alle java-adgangsmodifikatorer som offentlig, standard, beskyttet og privat til indre klasse svarende til de andre medlemmer af en klasse. Men den ydre eller normale klasse kan ikke være privat eller beskyttet.
6. Hvis variabelnavnet på den indre klasse er det samme som variabelnavnet på den ydre klasse, kan vi få adgang til den ydre klassevariabel som denne. OuterClassName.dette.VariableName; her repræsenterer dette nuværende ydre klasseobjekt.
7. Java inner class er skjult for en anden klasse i sin omsluttende klasse. Derfor giver det en sikkerhedsmekanisme i applikationsprogrammet og nedsætter læsbarheden (forståelsen) af programmet.
8. Et objekt af indre klasse skabes ofte i sin ydre klasse og kan ikke oprettes fra andre klasser.
9. Både ydre klasse og indre klasse objekter er skabt i separate hukommelsespladser.
syntaks til oprettelse af objekt for Indre klasse i Java
en forekomst af en indre klasse deler et forhold med en forekomst af en ydre klasse. Dette forhold er sådan, at vi ikke kan skabe et eksempel på den indre klasse uden at have et eksempel på den ydre klasse.
for at skabe et objekt af indre klasse skal du derfor først oprette et objekt af ydre klasse for at binde til den indre klasse. Vi kan oprette flere objekter af en indre klasse for den samme forekomst af en ydre klasse.
syntaksen for at oprette et objekt til den indre klasse er som følger:
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();
lad os forstå, hvordan en forekomst af en indre klasse deler et forhold til en forekomst af en ydre klasse med realtidseksempler.
Realtime eksempel på indre klasse
1. Antag, at der er et universitet. Universitetet indeholder flere afdelinger som elektronik, datalogi, elektrisk, mekanisk osv.
Antag, at regeringen i morgen besluttede at lukke dette universitet på grund af dets ulovlige aktivitet på universitetet. Hvis universitetet er lukket, lukkes alle afdelinger på dette universitet automatisk.
derfor kan vi sige, at afdelinger er bundet til universitetet. dvs. deres funktionaliteter er bundet til dets Universitet. Så uden et eksisterende universitetsobjekt er der ingen chance for eksisterende afdelingsobjekter.
da instituttet altid er en del af universitetsklassen. Derfor skal vi erklære institutklassen inden for universitetsklassen.
class University { // University is outer class. . . . . . . . class Department { // Department is inner class. . . . . . . . . }}
uden en eksisterende en type objekt, hvis der ikke er nogen chance for at eksistere en anden type objekt, skal vi implementere indre klasse.
2. Antag at der er en bil. Inden for en bil er der flere vigtige individuelle komponenter, der kræves. Den vigtigste komponent i bilen er motoren.
motoren skal være påkrævet for at fremstille en bil. Men uden et eksisterende bilobjekt er der heller ingen chance for at eksistere et motorobjekt.
da en motor altid er en vigtig del af en bil. Derfor skal klassemotoren erklæres inde i klassebilen.
class Car { . . . . . . . . . class Engine { . . . . . . . . . . }}
ovenstående to realtidseksempler forklares for at få de grundlæggende ideer i indre klasse. Nu tager vi det næste eksempel baseret på Java API.
3. Som vi ved, at der i Java er et Kortkoncept i collections API. Et kort er intet andet end en gruppe af nøgleværdipar. Hvert nøgleværdipar kaldes en post. Nu uden et eksisterende kortobjekt, er der nogen chance for eksisterende indgangsobjekt?
svaret er nej, fordi uden eksisterende et objekt på et kort, kan indgangsobjektet ikke også eksistere. Derfor er interfaceindtastning defineret inde i kortgrænsefladen.
Interface Map { // Map is an outer interface. . . . . . . . . . Interface Entry { // Entry is an inner interface. . . . . . . . . . . } }
nu ville du have forstået fra ovenstående realtidseksempel, at Hvornår skal bruge en indre klasse i Java-programmering.
brug af indre klasse i Java
der er følgende vigtige anvendelser af indre klasse i Java.
1. Den indre klasse er en værdifuld funktion, fordi den giver os mulighed for at gruppere klasser og grænseflader et sted, der logisk hører sammen.
2. Det hjælper med at kontrollere synligheden af den ene i den anden, så den kan være mere læsbar og vedligeholdelig.
3. Den bedste brug af java inner class er, når dens funktionalitet er bundet til dens ydre klasse. Det vil sige, uden et eksisterende ydre klasseobjekt, er der ingen chance for eksisterende indre klasseobjekt. Forstå eksempler i realtid.
4. . Java inner class er nyttigt at give sikkerhed for den vigtige kode. For eksempel, hvis vi erklærer indre klasse som privat, er den ikke tilgængelig for andre klasser. Dette betyder, at et objekt til indre klasse ikke kan oprettes i andre klasser.
lad os forstå det ved hjælp af Realtime eksempel program.
Antag, at vi opretter en klasse BankAcct. For at få nogle bankkontooplysninger definerer vi instansvariabler ‘balance’ og ‘rente’ af interesse i klassen.
calInterest() metode beregner rentebeløbet og vil vise balance beløb. Se følgende kildekode.
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); }}
som du bemærker, at der ikke er nogen sikkerhed for denne kode på grund af ikke at bruge nogen adgangsmodifikatorer før BankAcct-klassen.
da det er under standardadgangsmodifikatorer, kan enhver programmør nemt oprette et objekt i denne klasse og få adgang til medlemmerne af klassen uden for andre klasser. Derfor er der ingen sikkerhed for BankAcct klasse.
for eksempel kan enhver programmør oprette en anden klasse. Han vil oprette en forekomst af BankAcct-klasse og kan ændre renten som denne:
class Myclass { public static void main(String args ){ BankAcct ba = new BankAcct(); ba.calInterest(11.5); } }
således calInterest () metode er meget følsom. Det skal beskyttes mod udenforstående, fordi balancekontiene kan opdateres udefra af enhver anden person. Kun autoriseret person skal kunne opdatere balancekonti.
for at give sikkerhed til calInterest() metode og rente, hvis vi sætter code of calInterest() metode inde i en indre klasse og gøre det privat, kan ingen få adgang til dem fra udenfor klassen. Se koden.
class BankAcct { . . . . . . . . private class Interest { private double rate; void calInterest() { double interest = bal * rate/100; bal += interest; System.out.println("Balance = " +bal); } }}
nu er spørgsmålet, hvordan man får adgang til indre klasse?
for at få adgang til indre klasse opretter vi en kontakt () – metode inde i den ydre klasse. Inside contact () metode, vil vi skabe et objekt af indre klasse og kan få adgang til medlemmer af det.
en autentificering bank person kan interagere med indre klasse ved at kalde kontakt() metode. Når kontakt () metode vil blive kaldt, vil han blive verificeret med adgangskode, og så vil han være i stand til at bruge den indre klasse og få adgang til den.
således kan en indre klasse give en sikkerhedsmekanisme til vigtig kode i Java.
typer af indre klasse i Java
baseret på erklæring og adfærd er der grundlæggende fire typer indre klasser i Java. De er som følger:
- Normal eller regelmæssig indre klasse
- metode lokal indre klasse
- anonym indre klasse
- statisk indlejret indre klasse
i denne tutorial vil vi forstå hver enkelt i korte træk.
1. Normal eller regelmæssig indre klasse: en klasse oprettet i en anden klasse og uden for metoden uden statisk modifikator kaldes regelmæssig eller normal indre klasse.
2. Metode lokal indre klasse: en klasse erklæret inden for en metode i den ydre klasse kaldes metode lokal indre klasse.
3. Anonym indre klasse: En klasse erklæret uden noget navn overhovedet kaldes anonym indre klasse.
4. Statisk indlejret indre klasse: en klasse erklæret med statisk modifikator inden for en klasse kaldes statisk indlejret indre klasse. Det er også kendt som en Top-niveau indlejret klasse. Det kan kun få adgang til de statiske medlemmer af den ydre klasse.
Bemærk: de regelmæssige, metode-lokale og anonyme indre klasser er ikke-statiske indlejrede klasser.
fordele ved indre klasse
der er dybest set fem fordele ved indre klasse i java. De er som følger:
1. Indre klasse giver en måde at gruppere klasser og grænseflader på et sted, der logisk hører sammen.
2. Det kan direkte få adgang til alle variabler og metoder i den ydre klasse inklusive private.
3. Det bruges til at udvikle mere læsbar og vedligeholdelig kode.
4. Det kræver mindre kode at skrive.
5. Det øger indkapslingen.
forskel mellem indlejret klasse og indre klasse i Java
indlejret klasse er en klasse, der er defineret i en anden klasse. Der er to typer indlejret klasse: statisk og ikke-statisk. Ikke-statisk indlejret klasse er den indre klasse.
håber, at denne tutorial har dækket alle de vigtige funktioner i indre klasse i java med realtime eksempel programmer. Jeg håber, at du vil have forstået den grundlæggende ide om at bruge inner class i Java.
tak for læsningen!!!Næste larit medlem indre klasse i Java
⇒