1. Static Inner class
2. member Inner class
3. Local inner class
4. Anonymous inner class
Inner class:
Use of inner classes reduces naming conflicts.
An inner class can be defined in a class, in a method, or even in an expression.
The inner class is divided into four types:
Static inner class (static inner classes)
member Inner class (member inner classes)
Local inner class (local inner classes)
Anonymous inner class (anonymous inner classes)
1, static internal class (static inner classes)
The simplest inner class.
Only static member variables and static methods of external classes can be accessed.
Methods for generating static inner class objects:
Outerclass.innerclass inner = new Outerclass.innerclass ();
1.1, relevant use examples:
Static Inner class:
1Classstaticinner{2PrivateStaticint a = 1;34/**5* Static Inner class6* Generated class name: Staticinner$innerclass7*/8PublicStaticClassinnerclass{ 9 //10 private static int B = 1;public void execute ( {12 // static inner classes can only access static programs. Span style= "color: #008080;" >13 System.out.println (a + b); }15 }16}
Used in the Main method:
View Code
2. member Inner class (member inner classes):
Member inner classes can access static and non-static methods and member variables of external classes.
To generate a member's inner class object:
Outerclass.innerclass inner = new Outerclass (). New Innerclass ();
Methods for accessing the member variables of an external class in a local inner class:
OUTERCLASS.THIS.A;
2.1, relevant use examples:
member Inner class:
1Classmemberinner{2Privateint a = 1;34PublicvoidExecute () {5//Create a member inner class in an external class6 Innerclass Innerclass =This.NewInnerclass ();7}89/**10* Member Inner Class11*/12PublicClassinnerclass{1314//An inner class can create a member variable with the same name as an external class15Privateint a = 2;16 17 public void Execute () {18 //< Span style= "color: #008000;" >this refers to the inner class 19 System.out.println (this.A); 20 //21 System.out.println (Memberinner. This.a); 22 }23 }24}
Used in the Main method:
View Code
3. Local inner class (local inner classes):
Similar to local variables, cannot be defined as public,protected,private or static types.
In a method, you can only declare a variable of the final type in a method.
3.1, relevant use examples:
Local inner class:
1Classlocalinner{23PublicvoidExecute () {4Finalint a = 1;5/**6* Create local inner class7*/8Classinnerclass{9Publicvoid Execute () {10 System.out.println (" Localinner Class " Span style= "color: #000000;" >); 11 12 //13 System.out.println (a); 14 }15 }16 //17 Span style= "color: #0000ff;" >new Innerclass (). Execute (); }19}
Used in the Main method:
View Code
4. Anonymous inner class (anonymous inner classes):
Anonymous inner classes do not have class names, and there are no keyword adornments such as the Class keyword or extends and implements.
An anonymous inner class implicitly inherits a parent class or implements an interface.
4.1, relevant use examples:
1PublicStaticvoidMain (string[] args) {2 Anonymousinnerclasstest test =NewAnonymousinnerclasstest ();34/**5* Create anonymous inner class6* Generated class name: anonymousinnerclasstest$17*/8 Test.print (NewDate () {9//Overriding the ToString () method10@Override11PublicString toString () {12Return "Hello world.";13}14});15JButton button =NewJButton ();1718/**19* Create anonymous inner class20* The anonymous inner class implements the ActionListener interface21st* Generated class name: anonymousinnerclasstest$122*/Button.addactionlistener (NewActionListener () {24//Implementing methods in an interface25 @Override 26 public Span style= "color: #0000ff;" >void actionperformed (ActionEvent e) {27 SYSTEM.OUT.PRINTLN ("Use anonymous inner class to implement ActionListener interface" }29 }); 30 }31 32 public void print (date date) { 33 System.out.println (date)
Java Internal classes