1、静态嵌套类
Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化
(1)静态嵌套类不是其外部类的真正成员,它与外部类级别相同
(2)静态嵌套类不能直接引用其外部类中的实例变量或方法
(3)实例创建方式:
OuterClass.StaticNestedClass nestedObject =new OuterClass.StaticNestedClass();
(4)举例
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、内部类(成员内部类)
创建Plants内部类,外部类为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;// 外部类的成员变量 name = n; colour = c;// 内部类的成员变量 } public void display() { System.out.println("植物的名字是:" + name + " " + "颜色为:" + colour); } } }
测试:
public class Test { public static void main(String[] args) { Biology.Plants plants = new Biology().new Plants(1, "蒲公英", "黄色");// 内部类的访问 plants.display(); } }
可以看出,内部类的实例化需要依赖于外部类实例被实例化