1. Static nested classes
Static Nested Class is an internal class declared as static, it can be instantiated independently of external class instances. And the usual inner class needs to be instantiated after the outer class is instantiated
(1) The static nested class is not a real member of its external class, it is the same level as the external class
(2) Static nested classes cannot directly reference instance variables or methods in their external classes
(3) Instance creation method:
OuterClass.StaticNestedClass nestedObject =new OuterClass.StaticNestedClass();
(4) Examples
public class StaticInnerClass { public static class InnerClass{ private String string="早上好"; public void say(){ System.out.println(string); } } public void say(){ System.out.println("你好"); } public static void main(String[] args) { InnerClass InnerClass= new StaticInnerClass.InnerClass(); InnerClass.say(); StaticInnerClass staticInnerClass=new StaticInnerClass(); staticInnerClass.say(); } }
2. Internal class (member internal class)
Create Plants inner class, the outer class is Biology:
class Biology { public int age; public String name; public class Plants { public String colour; public Plants ( int a, String n, String c) { age = a; // Member variable of external class name = n; colour = c ; // Member variables of inner classes } public void display () { System.out.println ( "The name of the plant is:" + name + "\ n" + "Color is:" + colour); } } }
test:
public class Test { public static void main (String [] args) { Biology.Plants plants = new Biology (). new Plants (1, "Dandelion", "Yellow"); // Access to internal classes plants.display () ;}}
It can be seen that the instantiation of the inner class depends on the instantiation of the outer class instance