Inner class
Internal classes can access member variables and functions of external classes without creating objects, including private
External class to access internal classes, you must establish an inner class object
Inner classes can be private
When a static member is defined in an inner class, the inner class should also be static
When a static method in an external class accesses an inner class, the inner class should also be static
Main () {
Instantiating an inner class in an external class
Inner in =new Inner ();
In.i ();
//}
Local inner classes are defined locally, cannot be decorated by member modifiers, can directly access members in an external class, cannot access variables in the local area, and can only access the final decorated local variables class outer{int i=10;public void m () {sy So ("-------------"); }public void F () {class inner{int j=10; public void T () {SYSO ("" +i+ "" +j); }} Inner in=new Inner (); IN.T (); }main () {Outer out =new Outer (); Out.f ();}} 10 10 static inner class static inner class call variable can use variables of inner class can use static variable class outer{int i=10 in outer class; public void F () {Syso ("f () ...");} Static class inner{int i=20; public void I () {Syso (i+ "" +this.i+ "" +outer.i);}}} public class kk{Main () {Outer.Inner in=new outer.inner (); In.i (); }}//20 20 10 member inner classes exist inside a class as a class member, and you can access the outer class when all member methods are built into a non-owning class, you need to first create an external class, Outer.Inner in=new Outer (). New Inner (); The inner class accesses the outer class member variable outer.this.x class outer{int i=10; class inner{int i=20; public void V () {syso (i+ "" +this.i+ "" +outer.this.i);} }}public Class kk{
Outer out =new Outer ();
Outer.Inner in =out.new Inner ();
IN.V ()
Outer.Inner in=new Outer (). New Inner ();
IN.V ();
}//20 20 10
Anonymous inner class
The inner class must inherit a class or implement an interface. An anonymous inner class is an anonymous subclass object, and this object is presented as a class.
Interface email{
public void Send ();
}
public class kk{
An interface cannot instantiate an object, an anonymous inner class implements an interface, and a system instantiates an anonymous inner class object to an email
Email email=new Email () {
public void Send () {
SYSO ("send email");
}
};
Email. Send ();
}//send Email
Java Internal classes