suchen
HeimJavajavaLernprogrammDetaillierte Erläuterung des Beispielcodes interner Klassen der Java-Grundlagen

In diesem Artikel werden hauptsächlich detaillierte Erklärungen und Beispiele für grundlegende interne Java-Klassen vorgestellt. Freunde, die sie benötigen, können sich auf

Detaillierte Erklärungen und Beispiele für interne Java-Basisklassen beziehen

Innere Klassen sind nicht leicht zu verstehen, aber um es ganz klar auszudrücken: Eine Klasse enthält tatsächlich eine andere Klasse

So wie eine Person aus Gehirn, Gliedmaßen, Organen und anderen Körperteilen besteht, sind interne Klassen recht auf eines der Organe, wie zum Beispiel das Herz: Es hat auch seine eigenen Attribute und Verhalten (Blut, Schlagen)

Natürlich kann es hier nicht einseitig angewendet werden Ein Attribut oder eine Methode stellt ein Herz dar, das eine Klasse erfordert

und das Herz befindet sich im menschlichen Körper, genau wie die innere Klasse im Äußeren

Beispiel 1: Das Basic Struktur der inneren Klasse

//外部类
class Out {
  private int age = 12;
   
  //内部类
  class In {
    public void print() {
      System.out.println(age);
    }
  }
}
 
public class Demo {
  public static void main(String[] args) {
    Out.In in = new Out().new In();
    in.print();
    //或者采用下种方式访问
    /*
    Out out = new Out();
    Out.In in = out.new In();
    in.print();
    */
  }
}

Laufergebnis: 12

Aus dem obigen Beispiel ist nicht schwer zu erkennen, dass innere Klassen dem Guten tatsächlich ernsthaften Schaden zufügen Codestruktur, aber warum?

Da die innere Klasse die Mitglieder der äußeren Klasse Variablen (einschließlich private) frei verwenden kann, ohne das Objekt der äußeren Klasse zu generieren, ist dies der einzige Vorteil der inneren Klasse

Genau wie das Herz direkt auf das Blut des Körpers zugreifen kann, anstatt Blut über einen Arzt abzunehmen

Nachdem das Programm kompiliert wurde, werden zwei .class-Dateien generiert, nämlich Out.class und Out$In.class

Wobei $ den in Out.In im obigen Programm darstellt.

Out.In in = new Out().new In() can Mit dieser Methode können zwei kleine Wissenspunkte beachtet werden:

1. Das Out am Anfang dient dazu, anzugeben, welche externe Klasse das interne Klassenobjekt sein muss Generiert befindet sich

2. Es muss ein Objekt der externen Klasse vorhanden sein, bevor es generiert werden kann. Das Objekt der inneren Klasse, da die Funktion der inneren Klasse darin besteht, auf die Mitgliedsvariablen in der äußeren Klasse zuzugreifen

Beispiel 2: Variablenzugriffsform in der inneren Klasse

class Out {
  private int age = 12;
   
  class In {
    private int age = 13;
    public void print() {
      int age = 14;
      System.out.println("局部变量:" + age);
      System.out.println("内部类变量:" + this.age);
      System.out.println("外部类变量:" + Out.this.age);
    }
  }
}
 
public class Demo {
  public static void main(String[] args) {
    Out.In in = new Out().new In();
    in.print();
  }
}

Laufergebnisse:

Lokale Variablen: 14
Inner Klassenvariablen: 13
Externe Klassenvariablen: 12

Wie aus Instanz 1 hervorgeht, wird die innere Klasse in Abwesenheit von Mitgliedsvariablen und lokalen Variablen mit demselben Namen verwendet Greifen Sie direkt auf die Mitgliedsvariablen der äußeren Klasse zu, ohne den Attributnamen

anzugeben. Andernfalls überschreiben die lokalen Variablen in der inneren Klasse die Mitgliedsvariablen der äußeren Klasse von

und greifen auf Mitgliedsvariablen zu Der Zugriff auf Mitgliedsvariablen der äußeren Klasse erfordert die Verwendung von Out.this Attributname

Beispiel 3: StaticInnere Klasse

class Out {
  private static int age = 12;
   
  static class In {
    public void print() {
      System.out.println(age);
    }
  }
}
 
public class Demo {
  public static void main(String[] args) {
    Out.In in = new Out.In();
    in.print();
  }
}

Laufendes Ergebnis: 12

Wie Sie sehen können, kann die innere Klasse nur auf die interne Klasse zugreifen, wenn Sie Static verwenden, um sie statisch zu machen Statische Mitgliedsvariablen der äußeren Klasse, die Einschränkungen unterliegen

Zweitens kann Out.In als Ganzes betrachtet werden, da die innere Klasse statisch ist, und das Objekt der inneren Klasse kann direkt neu sein ( Zugriff auf statisch durch den Klassennamen spielt es keine Rolle, ob ein externes Klassenobjekt generiert wird oder nicht)

Beispiel 4: Private innere Klasse

class Out {
  private int age = 12;
   
  private class In {
    public void print() {
      System.out.println(age);
    }
  }
  public void outPrint() {
    new In().print();
  }
}
 
public class Demo {
  public static void main(String[] args) {
    //此方法无效
    /*
    Out.In in = new Out().new In();
    in.print();
    */
    Out out = new Out();
    out.outPrint();
  }
}

Laufendes Ergebnis: 12

Wenn eine innere Klasse nur durch Methoden in der äußeren Klasse betrieben werden möchte, können Sie private verwenden, um die innere Klasse zu deklarieren

Im obigen Code müssen wir generieren Die In-Klasse im Out-Klassenobjekt wird bedient, und Out.In in = new Out().new In() kann nicht mehr zum Generieren eines Objekts der inneren Klasse verwendet werden

Mit anderen Worten, das Die innere Klasse kann zu diesem Zeitpunkt nur von der äußeren Klasse kontrolliert werden

Mein Herz kann nur von meinem Körper kontrolliert werden, andere können nicht direkt darauf zugreifen

Instanz 5: Methode innere Klasse

class Out {
  private int age = 12;
 
  public void Print(final int x) {
    class In {
      public void inPrint() {
        System.out.println(x);
        System.out.println(age);
      }
    }
    new In().inPrint();
  }
}
 
public class Demo {
  public static void main(String[] args) {
    Out out = new Out();
    out.Print(3);
  }
}

Laufende Ergebnisse:

3
12

Im obigen Code haben wir die innere Klasse verschoben zur Methode der äußeren Klasse und dann in der Methode der äußeren Klasse Generieren Sie dann ein inneres Klassenobjekt, um die Methode der inneren Klasse aufzurufen

Wenn wir hier Parameter an die Methode der äußeren Klasse übergeben müssen Dann müssen die Methodenparameter der äußeren Klasse mit final definiert werden

Final hat hier keine besondere Bedeutung, es ist nur eine Ausdrucksform.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Beispielcodes interner Klassen der Java-Grundlagen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor