Heim Java javaLernprogramm Zusammenfassung der inneren Klassen in Java

Zusammenfassung der inneren Klassen in Java

Feb 06, 2017 pm 01:20 PM

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

Genauso wie ein Mensch aus Gehirn, Gliedmaßen, Organen und anderen Körperteilen besteht, sind es auch interne Klassen Ganz eines der Organe, wie zum Beispiel das Herz: Es hat auch seine eigenen Attribute und Verhaltensweisen (Blut, Schlagen)

Natürlich kann ein Herz hier nicht einseitig durch Attribute oder Methoden dargestellt werden, sondern es ist eine Klasse erforderlich

Und das Herz ist im menschlichen Körper, genau wie die innere Klasse innen und außen

Beispiel 1: Die Grundstruktur 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();   
         */   
     }   
 }
Nach dem Login kopieren

Laufergebnis : 12

Aus dem obigen Beispiel ist nicht schwer zu erkennen, dass innere Klassen tatsächlich eine gute Codestruktur ernsthaft zerstören, aber warum sollten innere Klassen verwendet werden?

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

Genau wie die Das Herz kann direkt auf das Blut des Körpers zugreifen, 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 $ Out im obigen Programm darstellt. Das eine in .In.

Out.In in = new Out().new In() kann zum Generieren von Objekten innerer Klassen verwendet werden kleine Wissenspunkte, auf die bei dieser Methode geachtet werden muss

1 Das Out am Anfang soll angeben, welche externe Klasse das interne Klassenobjekt generiert werden muss

2 ein Objekt der externen Klasse sein, bevor das Objekt der internen Klasse generiert werden kann, da die Funktion der internen Klasse darin besteht, auf 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();   
     }   
 }
Nach dem Login kopieren

Laufendes Ergebnis:

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


Aus Beispiel 1 geht hervor, dass die innere Klasse keine Mitgliedsvariablen mit demselben Namen hat. Bei lokalen Variablen greift die innere Klasse direkt auf die Mitgliedsvariablen von zu die äußere Klasse ohne Angabe von Out.this. Attributname

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

Um auf die Mitgliedsvariablen der inneren Klasse zuzugreifen selbst können Sie diesen Attributnamen verwenden, und um auf die Mitgliedsvariablen der äußeren Klasse zuzugreifen, müssen Sie Out.this Attributnamen verwenden

Beispiel 3: Statische innere 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();   
     }   
 }
Nach dem Login kopieren

Laufergebnis: 12

Sie können sehen, dass die innere Klasse nur auf die statischen Mitgliedsvariablen der äußeren Klasse zugreifen kann, wenn Sie statisch verwenden, um die innere Klasse statisch zu machen, was Einschränkungen unterliegt

Zweitens: Da die innere Klasse statisch ist, kann Out.In als Ganzes betrachtet werden, und Sie können das Objekt der inneren Klasse direkt neu erstellen (über den Klassennamen auf statisch zugreifen, es spielt keine Rolle, ob das äußere 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();   
     }   
 }
Nach dem Login kopieren

Laufendes Ergebnis: 12

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

oben zu deklarieren. Im Code müssen wir für den Betrieb ein Objekt der In-Klasse in der Out-Klasse generieren und können Out.In in = new Out nicht mehr verwenden ().new In(), um ein Objekt der inneren Klasse zu generieren

Das heißt, die innere Klasse kann zu diesem Zeitpunkt nur von der äußeren Klasse gesteuert werden

Genau so, mein Herz kann nur von meinem Körper gesteuert werden, andere können nicht direkt darauf zugreifen

Beispiel 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);   
     }   
 }
Nach dem Login kopieren

Laufergebnisse:

3
12

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

Wenn wir zu diesem Zeitpunkt Parameter an die Methode der äußeren Klasse übergeben müssen, müssen die Methodenparameter der äußeren Klasse mit final definiert werden

Was final betrifft, hat es hier keine besondere Bedeutung ist nur eine Ausdrucksform

Zusammenfassung der inneren Klassen in Java

Das Obige ist eine Zusammenfassung der internen Klassen in Java und weiterer verwandter Inhalte. Bitte beachten Sie die chinesische PHP-Website (www.php.cn). )!


Erklärung dieser Website
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 vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Zufallszahlengenerator in Java Zufallszahlengenerator in Java Aug 30, 2024 pm 04:27 PM

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Zeitstempel für Datum in Java Zeitstempel für Datum in Java Aug 30, 2024 pm 04:28 PM

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Java -Programm, um das Kapselvolumen zu finden Java -Programm, um das Kapselvolumen zu finden Feb 07, 2025 am 11:37 AM

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

See all articles