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 + "\n" + "颜色为:" + colour);
}
}
}
测试:
public class Test {
public static void main(String[] args) {
Biology.Plants plants = new Biology().new Plants(1, "蒲公英", "黄色");// 内部类的访问
plants.display(); } }
可以看出,内部类的实例化需要依赖于外部类实例被实例化