Was ist die innere Klasse in Java?

Veröffentlicht: 2022-04-29

Das Konzept der inneren Klasse in Java ist grundlegend für die Java-Programmierung. In Java sind eine verschachtelte Klasse und eine innere Klasse zwei sehr ähnliche, aber leicht unterschiedliche Ideen des Klassendesigns und gehen oft Hand in Hand.

Eine verschachtelte Klasse wird innerhalb einer anderen Klasse definiert und hat zwei Typen – statische verschachtelte Klasse und nicht statische verschachtelte Klasse. Auf der anderen Seite ist eine innere Klasse eine Art nicht statischer verschachtelter Klasse und besteht aus drei weiteren Typen – innerer Mitgliedsklasse, anonymer innerer Klasse und lokaler innerer Klasse.

Also, was bedeuten diese drei Arten von inneren Klassen und wozu dienen sie? Lesen Sie weiter, um es in diesem ausführlichen Leitfaden zur inneren Klasse von Java herauszufinden.

Inhaltsverzeichnis

Bedeutung der inneren Klasse in Java

Eine nichtstatische verschachtelte Klasse oder innere Klasse wird innerhalb einer anderen Klasse definiert und hat Zugriff auf Mitglieder der äußeren Klasse (einschließende Klasse). Im Gegensatz dazu ist eine statisch verschachtelte Klasse auch eine Klasse, die innerhalb einer anderen Klasse definiert ist, aber im Gegensatz zu einer nicht statischen verschachtelten Klasse kann sie nicht auf die Elementvariablen ihrer äußeren Klasse zugreifen. Im Fall einer nicht statischen verschachtelten Klasse müssen wir keine Instanz der äußeren Klasse erstellen. Aber im Fall einer inneren Klasse müssen wir zuerst die äußere Klasse instanziieren, um die innere Klasse instanziieren zu können.

Quelle

Arten von inneren Klassen in Java

In Java gehören innere Klassen zu den folgenden drei Typen:

  • Mitglied der inneren Klasse
  • Anonyme innere Klasse
  • Lokale innere Klasse

Lassen Sie uns nun jede Art von innerer Klasse anhand von Beispielen verstehen.

1. Mitglied der inneren Klasse

Eine innere Member-Klasse in Java ist eine nicht statische verschachtelte Klasse, die innerhalb einer Klasse, aber außerhalb einer Methode erstellt wird. Eine innere Member-Klasse, die auch als reguläre innere Klasse bezeichnet wird, kann mit Zugriffsmodifikatoren wie private, public, default und protected deklariert werden.

Die Syntax für eine innere Mitgliedsklasse lautet wie folgt:

Klasse Äußere{

//Code

Klasse Inner{

//Code

}

}

Mitglied der inneren Klasse im Java-Beispiel:

Unten ist ein Programm, das demonstriert, wie man eine innere Klasse erstellt und darauf zugreift. Wir machen die innere Klasse privat und verwenden die Methode display_Inner(), um auf die Klasse zuzugreifen.

Klasse DemoOuter {

int Zahl;

// innere Klasse

Privatunterricht DemoInner {

öffentlich void print() {

System.out.println("Dies ist die innere Klasse");

}

}

// Zugriff auf die innere Klasse von der darin enthaltenen Methode

void display_Inner() {

DemoInner inner = new DemoInner();

inner.print();

}

}

öffentliche Klasse MyClass {

public static void main(String args[]) {

// Instanziierung der äußeren Klasse

DemoOuter äußere = neue DemoOuter();

// Zugriff auf die Methode display_Inner()

äußere.display_Inner();

}

}

Ausgabe: Dies ist die innere Klasse

Im obigen Beispiel ist OuterDemo die äußere Klasse, InnerDemo die innere Klasse, wir instanziieren die innere Klasse innerhalb der Methode display_Inner(), die von der Hauptmethode aufgerufen wird.

Erkunden Sie unsere beliebten Softwareentwicklungskurse

SL. Nein Softwareentwicklungsprogramme
1 Master of Science in Informatik von LJMU & IIITB Caltech CTME Cybersecurity-Zertifikatsprogramm
2 Full-Stack-Entwicklungs-Bootcamp PG-Programm in Blockchain
3 Executive Post Graduate Program in Softwareentwicklung - Spezialisierung auf DevOps Alle Softwareentwicklungskurse anzeigen

2. Anonyme innere Klasse

Eine anonyme innere Klasse in Java ist eine innere Klasse, die ohne Klassennamen deklariert wird und für die nur ein einziges Objekt erstellt wird. Anonyme innere Klassen in Java werden gleichzeitig deklariert und instanziiert. Sie sind am wertvollsten, wenn wir die Methode einer Klasse oder Schnittstelle überschreiben möchten.

Die Syntax für eine anonyme innere Klasse in Java lautet wie folgt:

AnonymousInner an_inner = new AnonymousInner() {

öffentliche void meine_methode() {

//Code

}

};

Eine anonyme innere Klasse in Java kann auf zwei Arten erstellt werden:

  1. Klasse verwenden
  2. Schnittstelle verwenden

Anonyme innere Klasse im Java-Beispiel (mit Klasse):

abstrakte Klasse Mahlzeit{

abstrakte Leere essen ();

}

Klasse TestAnonymousInner{

public static void main(String args[]){

Mahlzeit m=neue Mahlzeit(){

void eat(){System.out.println(“Guten Appetit!”);}

};

Fleisch();

}

}

Ergebnis : Guten Appetit!

Anonyme innere Klasse im Java-Beispiel (unter Verwendung der Schnittstelle):

Schnittstelle Spiel{

leeres Spiel ();

}

Klasse TestAnnonymousInner1{

public static void main(String args[]){

Spiel g=neues Spiel(){

public void play(){System.out.println("Spiele im Freien");}

};

g.play();

}

}

Ausgang: Spiele im Freien

3. Lokale innere Klasse

Eine lokale innere Klasse in Java ist eine Klasse, die innerhalb einer Methode erstellt wird. Wie bei lokalen Variablen bleibt der Geltungsbereich der lokalen inneren Klasse innerhalb der Methode eingeschränkt.

Lokale innere Klassen werden innerhalb eines Blocks definiert: ein Methodenkörper, eine if-Klausel oder eine for-Schleife. Eine lokale innere Klasse ist kein Mitglied einer umgebenden Klasse, sondern gehört zu dem Block, in dem sie definiert ist. Obwohl einer lokalen inneren Klasse in Java keine Zugriffsmodifikatoren zugeordnet werden können, können Sie sie daher als abstrakt oder endgültig markieren. Wenn wir die Methoden einer lokalen inneren Klasse aufrufen wollen, müssen wir die Klasse innerhalb der Methode instanziieren.

Beispiel einer lokalen inneren Klasse in Java:

Unten ist ein Beispielprogramm, das zeigt, wie das Objekt einer lokalen inneren Klasse instanziiert wird, die innerhalb der Methode einer äußeren Klasse deklariert wird.

Paket innerClass;

öffentliche Klasse Outer_Class

{

// Eine Instanzmethode der Klasse Outer_Class.

öffentliche Leeranzeige ()

{

// Deklaration einer Methode der lokalen inneren Klasse.

Klasse Inner_Class

{

öffentliche Void-Nachricht () {

System.out.println("Dies ist eine lokale innere Klasse!");

}

}

// Erstellen Sie eine Instanz einer lokalen inneren Klasse der Methode und rufen Sie die Methode msg() mit der Objektreferenzvariablen i auf.

Inner_Class i = neue Inner_Class();

i.msg();

}

public static void main(String[] args)

{

// Erstellen Sie ein Objekt der äußeren Klasse Outer_Class.

Äußere_Klasse o = neue Äußere_Klasse();

o.display();

}

}

Ausgabe: Dies ist eine lokale innere Klasse!

Lassen Sie uns unter Berücksichtigung der Grundlagen der inneren Klasse von Java verstehen, warum wir sie überhaupt brauchen.

Vorteile der inneren Java-Klasse

Eine innere Klasse in Java bringt drei wichtige Dienstprogramme auf den Tisch. Diese sind wie folgt:

1. Da eine innere Java-Klasse auf die Datenelemente und Methoden der äußeren/Hauptklasse zugreifen kann, einschließlich privater, stellt sie eine bestimmte Art von Beziehung dar.

2. Eine innere Java-Klasse reduziert die Codierung erheblich, da sie weniger zu schreiben erfordert.

3. Eine innere Klasse in Java gruppiert Klassen und Schnittstellen logisch an einer einzigen Stelle, wodurch die Lesbarkeit des Codes verbessert und die Wartung vereinfacht wird.

Zusammenfassen

Das Konzept der verschachtelten Klassen vereinfacht und fügt der Erstellung von Klassen überall in der Java-Programmierung Flexibilität hinzu. In dieser Hinsicht ist eine nicht statische verschachtelte Klasse, die als innere Klasse bekannt ist, besonders nützlich, wie wir in unserer bisherigen Diskussion bereits gesehen haben.

Wir möchten zum Abschluss zwei Fälle nennen, in denen die Verwendung der inneren Klasse am geeignetsten erscheint. Erstens ist eine innere Java-Klasse ideal, wenn zwei Klassen eine enge Beziehung haben und für keine andere Klasse zugänglich sind. Und zweitens sind innere Klassen in der Ereignisverarbeitung der Java-GUI-Programmierung alltäglich. Daher können innere Java-Klassen sicher verwendet werden, wenn Listener und ihre GUI-Komponenten involviert sind.

Sie fragen sich, wo Sie Java lernen können?

Die berufsgebundene PG-Zertifizierung von upGrad in Software Engineering ist, was Sie suchen!

Die berufsbezogene PG-Zertifizierung in Software Engineering von upGrad wurde speziell für frische Absolventen und Abschlussjahrgänge entwickelt und ist perfekt für diejenigen, die das Programmieren lernen und in Softwarerollen auf Einstiegsebene platziert werden möchten. Dieses 5-monatige Online-Programm vermittelt erstklassige Softwarekenntnisse wie Java, JavaScript, HTML5, DSA, AWS, MERN und mehr!

Programm-Highlights:

  • Spezialisierung auf MERN Stack/Cloud-Native
  • Über 500 Stunden Online-Lernen
  • Über 350 Stunden praktisches Training
  • Über 50 Live-Sessions
  • Fünf Industrieprojekte
  • Networking mit Branchenexperten
  • Frage-und-Antwort-Foren mit Kollegen und Branchenexperten
  • Lernunterstützung durch Lehrassistenten und Mentoren aus der Industrie

Melden Sie sich noch heute an, um von den Besten der Branche zu lernen!

Was ist der Unterschied zwischen innerer Klasse und Unterklasse?

Eine innere Klasse ist eine Klasse, die innerhalb einer anderen Klasse verschachtelt oder definiert ist. Andererseits ist eine Unterklasse eine Klasse, die von einer anderen Klasse abgeleitet ist. Während auf eine innere Klasse nur unter Verwendung der Referenz der äußeren Klasse zugegriffen werden kann, in der sie verschachtelt ist, kann außerdem direkt auf eine Unterklasse zugegriffen werden, es sei denn, die Unterklasse hat geerbte private Variablen.

Können wir in Java eine Klasse in eine Klasse schreiben?

Ja, wir können eine Klasse innerhalb einer anderen Klasse in Java definieren. Eine solche Klasse wird als verschachtelte Klasse bezeichnet und ermöglicht es uns, Klassen logisch an einem Ort zu organisieren und dadurch einen besser wartbaren und lesbaren Code zu erstellen. Als Teil ihrer einschließenden Klasse kann eine verschachtelte Klasse als öffentlich, privat, paketprivat oder geschützt deklariert werden.

Kann die innere Java-Klasse privat sein?

Ja, eine innere Java-Klasse kann privat sein. Aber sobald eine innere Klasse als privat deklariert ist, kann nicht mehr von einem Objekt außerhalb der Klasse darauf zugegriffen werden. Innere und äußere Klassen haben Zugriff auf die privaten Instanzvariablen und privaten Methoden der jeweils anderen. Solange wir uns in der äußeren oder inneren Klasse befinden, haben die Modifikatoren private und public dieselbe Wirkung.