与方法中是否能够使用静态变量相同,非静态内部类不能声明静态成员变量,静态内部类可以声明静态成员变量。
非静态内部类对象的创建:
先创建外部类对象,之后外部类对象调用new关键字创建内部类对象。
Outter outter=new Outter();
Outter.Inner inner=outter.new Inner();
静态内部类对象的创建:外部类.内部类直接创建。
Outter.Inner inner=new Outter.Inner();
public class Outter {
public static class Inner1{
public static String text="静态成员变量";
}
public class Inner2{
public String text="非静态变量";
}
public class Inner3{
//非静态内部类不能声明静态成员变量
//public static String text="静态成员变量";
}
}
内部类对象的创建:
public class Test {
public static void main(String[] args) {
//创建静态内部类对象,语法 外部类.内部类 引用名=new 外部类.内部类()
Outter.Inner1 inner1=new Outter.Inner1();
System.out.println(inner1.text);
//创建非静态内部类对象
//如果继续采用静态内部类语法创建,则出现is not an enclosing class
// Outter.Inner2 inner2=new Outter.Inner2();
Outter outter=new Outter();
Outter.Inner2 inner2=outter.new Inner2();
System.out.println(inner2.text);
//与方法类似,非静态内部类不能调用静态资源
Outter.Inner3 inner3=outter.new Inner3();
}
}