Inner Class in Java / Use, Types, Example

Innerklasse I Java / Så langt har vi kjent at medlemmene av klassen er variabler, metoder, konstruktører og initialiseringsblokker.

Men det er også mulig å ha en klasse eller et grensesnitt som medlem av en klasse.

en klasse erklært i en annen klasse er kjent som nestede klasser i java. Omfanget av en nestet klasse er bundet av omfanget av sin omsluttende klasse (ytre klasse).

således, hvis klasse B er definert i klasse A, kan klasse B ikke eksistere uavhengig uten klasse A. her er klasse a ytre eller omsluttende klasse og klasse B er nestet klasse.

en nestet klasse i java har tilgang til medlemmene (inkludert private medlemmer) av sin omsluttende klasse. Men den omsluttende klassen har ikke tilgang til medlemmene av den nestede klassen.

klassen som er medlem av en annen klasse kan være enten statisk eller ikke-statisk. Med andre ord er det to typer nestede klasser i java: statisk og ikke-statisk.

medlemsklassen som er deklarert med en statisk modifikator, kalles statisk nestet klasse i java.

medlemsklassen som er ikke-statisk er kjent som indre klasse eller ikke-statisk nestet klasse. Det er den viktigste typen nestet klasse.

i denne opplæringen lærer vi bare indre klasse I Java. Senere vil vi diskutere statisk nestet klasse i den videre opplæringen.
Indre klasse I Java med realtime eksempel

Indre klasse I Java

en indre klasse i java er en klasse som er erklært inne i en annen klasse uten statisk modifier. Det er også kjent som en ikke-statisk nestet klasse I Java. Den kan få tilgang til alle medlemmer (variabler og metoder) i sin ytre klasse.

en indre klasse kan ikke ha noen form for statiske medlemmer. Medlemmene av java inner class kan være:

  1. Instansvariabler
  2. Instansmetoder
  3. Konstruktører
  4. Initialiseringsblokk
  5. Indre klasse

Syntaks Av 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. . . . . } }

klassen som holder den indre klassen kalles omsluttende eller ytre klasse. Den omsluttende klassen er en toppklasse, mens den indre klassen er medlem av ytre klasse.

forholdet mellom ytre klasse og indre klasse representerer Har-et forhold. A Har-et forhold etablerer forholdet mellom to klasser. Det er også kjent som sammensetning eller aggregering I Java.

når en indre klasse er en omsluttende klasse for en annen indre klasse, kalles den nesting av indre klasser. Det er ingen grense for nesting av indre klasser.

I hvilken versjon Inner class ble introdusert I Java?

Inner class ble introdusert I Java 1.1-versjonen uten endringer I JVM som brukes til å håndtere klassefilene. Det er fullstendig implementert ved Hjelp Av Java compiler.

Java-kompilatoren genererer en egen punktklassefil for hver indre klasse Kalt Ytre$Indre.klasse og for en ytre klasse som heter Ytre.klasse. For eksempel er en indre klasse A kompilert i en klassetest Kalt Test$A.class.

hvis et punktklassefilnavn inneholder » $ » – symbol i midten, viser det en indre klassefil. Formatet på klassefilene for indre klasser har det samme som klassefiler for de ytre klassene.

DERFOR behandler JVM klassefilene for indre klasser og de ytre klassene det samme.

Funksjoner I Indre klasse

det er flere viktige funksjoner i en indre klasse som er som følger:

1. En indre klasse kan ha samme navn som den ytre klassen.

2. Omfanget av indre klasse er begrenset av omfanget av sin ytre klasse.

3. Uten eksisterende et ytre klasseobjekt eller en forekomst, vil det ikke være noen sjanse for et eksisterende indre klasseobjekt.

4. En indre klasse kan direkte få tilgang til alle variablene og metodene til den ytre klassen, inkludert privat.

5. Siden den indre klassen er et vanlig medlem av den ytre klassen, akkurat som deklarerte variabler og metoder i klassen.

derfor kan vi bruke alle java – tilgangsmodifikatorer som offentlig, standard, beskyttet og privat til indre klasse som ligner de andre medlemmene av en klasse. Men den ytre eller normale klassen kan ikke være privat eller beskyttet.

6. Hvis variabelnavnet til indre klasse er det samme som variabelnavnet til ytre klasse, kan vi få tilgang til den ytre klassevariabelen som dette. OuterClassName.dette.VariableName; her representerer dette gjeldende ytre klasseobjekt.

7. Java inner class er skjult fra en annen klasse i sin omsluttende klasse. Derfor gir det en sikkerhetsmekanisme i programmet og reduserer lesbarhet (forståelse) av programmet.

8. Et objekt av indre klasse er ofte skapt i sin ytre klasse og kan ikke opprettes fra andre klasser.

9. Både ytre klasse og indre klasse objekter opprettes i separate minnesteder.

Syntaks for å opprette objekt Av Indre klasse I Java

en forekomst av en indre klasse deler et forhold med en forekomst av en ytre klasse. Dette forholdet er slik at vi ikke kan skape en forekomst av den indre klassen uten å ha en forekomst av den ytre klassen.

Derfor, for å skape et objekt av indre klasse, Må du først opprette et objekt av ytre klasse for å knytte til den indre klassen. Vi kan opprette flere objekter av en indre klasse for samme forekomst av en ytre klasse.

syntaksen for å opprette et objekt for den indre klassen 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();

La oss forstå hvordan en forekomst av en indre klasse deler et forhold til en forekomst av en ytre klasse med sanntidseksempler.

Realtime Eksempel På Indre klasse

1. Anta at det er et universitet. Universitetet inneholder flere avdelinger som elektronikk, informatikk, elektrisk, mekanisk, etc.

Anta at i morgen, regjeringen besluttet å stenge dette universitetet på grunn av sin ulovlige aktivitet skjer i universitetet. Hvis universitetet er stengt, lukkes alle avdelinger på dette universitetet automatisk.

derfor kan vi si at avdelinger er knyttet til universitetet. dvs. deres funksjonalitet er knyttet til universitetet. Så, uten et eksisterende universitetsobjekt, er det ingen sjanse for eksisterende avdelingsobjekter.

siden instituttet alltid er en del av universitetsklassen. Derfor må vi erklære avdelingsklassen inne i universitetsklassen.

class University { // University is outer class. . . . . . . . class Department { // Department is inner class. . . . . . . . . }}

dermed, uten en eksisterende en type objekt, hvis det ikke er sjanse for eksisterende en annen type objekt, bør vi implementere indre klasse.

2. Anta at det er en bil. Innenfor en bil er det flere viktige individuelle komponenter som kreves. Den viktigste delen av bilen er motoren.

motoren må kreves for å lage en bil. Men uten et eksisterende bilobjekt er det heller ingen sjanse for å eksisterende et motorobjekt.

siden en motor alltid er en viktig del av en bil. Derfor må klassemotoren deklareres inne i klassebilen.

class Car { . . . . . . . . . class Engine { . . . . . . . . . . }}

de ovennevnte to sanntidseksemplene er forklart for å få de grunnleggende ideene til indre klasse. Nå vil vi ta neste eksempel basert På Java API.

3. Som Vi vet at I Java er Det Et Kartkonsept I collections API. Et kart er ingenting annet enn en gruppe nøkkelverdipar. Hvert nøkkelverdipar kalles en oppføring. Nå uten et eksisterende kartobjekt, Er det noen sjanse for eksisterende oppføringsobjekt?

svaret er nei fordi uten eksisterende et objekt av et kart, kan ikke oppføringsobjektet også eksistere. Derfor er grensesnittoppføring definert inne i kartgrensesnittet.

Interface Map { // Map is an outer interface. . . . . . . . . . Interface Entry { // Entry is an inner interface. . . . . . . . . . . } }

nå ville du ha forstått fra det ovennevnte sanntidseksemplet at når skal du bruke en indre klasse I Java-programmering.

Bruk Av Indre klasse I Java

det er følgende viktige bruksområder av indre klasse i Java.

1. Den indre klassen er en verdifull funksjon fordi den tillater oss å gruppere klasser og grensesnitt på ett sted som logisk hører sammen.

2. Det bidrar til å kontrollere synligheten av en i den andre, slik at den kan være mer lesbar og vedlikeholdsbar.

3. Den beste bruken av java inner class er når funksjonaliteten er knyttet til sin ytre klasse. Det vil si, uten et eksisterende ytre klasseobjekt, er det ingen sjanse for eksisterende indre klasseobjekt. Forstå sanntidseksemplene.

4. . Java inner class er nyttig for å gi sikkerhet for den viktige koden. For eksempel, hvis vi erklærer indre klasse som privat, er den ikke tilgjengelig for andre klasser. Dette betyr at et objekt til indre klasse ikke kan opprettes i noen andre klasser.

La oss forstå det med hjelp av realtime eksempel program.

Anta at vi oppretter en klasse BankAcct. For å få noen bankkontodetaljer, definerer vi instansvariabler ‘balanse’ og ‘rente’ av interesse i klassen.

calInterest () – metoden beregner rentebeløpet og vil vise saldobeløp. Se på 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); }}

når du ser at det ikke er noen sikkerhet for denne koden på grunn av at du ikke bruker noen tilgangsmodifikatorer før BankAcct-klassen.

Siden det er under standard tilgangsmodifikatorer, kan enhver programmerer enkelt lage et objekt av denne klassen og få tilgang til medlemmer av klassen fra utenfor andre klasser. Derfor er det ingen sikkerhet For BankAcct-klassen.

for eksempel kan enhver programmerer opprette en annen klasse. Han vil skape En forekomst Av BankAcct klasse og kan endre rente som dette:

class Myclass { public static void main(String args ){ BankAcct ba = new BankAcct(); ba.calInterest(11.5); } }

dermed er calInterest () – metoden svært følsom. Det må beskyttes mot utenforstående fordi saldokontoene kan oppdateres fra utsiden av enhver annen person. Kun autorisert person skal kunne oppdatere saldokontoene.

for å gi sikkerhet til calInterest () metode og rente, hvis vi setter kode for calInterest () metode i en indre klasse og gjør den privat, kan ingen få tilgang til dem fra utenfor klassen. Se på koden.

class BankAcct { . . . . . . . . private class Interest { private double rate; void calInterest() { double interest = bal * rate/100; bal += interest; System.out.println("Balance = " +bal); } }}

nå er spørsmålet hvordan du får tilgang til indre klasse?

for å få tilgang til indre klasse, oppretter vi en kontakt () – metode inne i ytre klasse. Inside contact () – metoden, vil vi skape et objekt av indre klasse og kan få tilgang til medlemmer av den.

en autentiseringsbank person kan samhandle med indre klasse ved a ringe kontakt () – metoden. Når kontakt () – metoden vil bli kalt, vil han bli verifisert med passord og da vil han kunne bruke den indre klassen og få tilgang til den.

dermed kan en indre klasse gi en sikkerhetsmekanisme til viktig kode i Java.

Typer Indre klasser I Java

Basert på erklæring og atferd, er det i utgangspunktet fire typer indre klasser I Java. De er som følger:

  • Normal Eller Vanlig Indre Klasse
  • Metode Lokal Indre Klasse
  • Anonym Indre Klasse
  • Statisk Nestet Indre Klasse

i denne opplæringen vil vi forstå hver enkelt kort.

1. Normal eller Vanlig indre klasse: en klasse opprettet i en annen klasse og utenfor metoden uten statisk modifikator kalles vanlig eller normal indre klasse.

2. Metode lokal indre klasse: en klasse erklært innenfor en metode for den ytre klassen kalles metode lokal indre klasse.

3. Anonym indre klasse: En klasse erklært uten navn i det hele tatt kalles anonym indre klasse.

4. Statisk nestet indre klasse: en klasse deklarert med statisk modifikator i en klasse kalles statisk nestet indre klasse. Det er også kjent som en toppnivå nestet klasse. Den kan bare få tilgang til de statiske medlemmene av den ytre klassen.

Merk: de vanlige, metode-lokale og anonyme indre klassene er ikke-statiske nestede klasser.

Fordeler Med Indre klasse

det er i utgangspunktet fem fordeler med indre klasse i java. De er som følger:

1. Inner class gir en måte å gruppere klasser og grensesnitt på ett sted som logisk hører sammen.
2. Den kan direkte få tilgang til alle variablene og metodene i den ytre klassen, inkludert privat.
3. Den brukes til å utvikle mer lesbar og vedlikeholdbar kode.
4. Det trenger mindre kode for å skrive.
5. Det øker innkapslingen.

Forskjell Mellom Nestet klasse og Innerklasse I Java

Nestet klasse er en klasse som er definert i en annen klasse. Det finnes to typer nestet klasse: statisk og ikke-statisk. Ikke-statisk nestet klasse er den indre klassen.

Håper at denne opplæringen har dekket alle de viktige funksjonene i indre klasse i java med realtime eksempel programmer. Jeg håper at du har forstått den grunnleggende ideen om å bruke inner class I Java.
Takk for at du leser!!!Neste ⇒ indre klasse I Java

⇐⇒

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.