與方法中是否能夠使用靜態變量相同,非靜態內部類不能聲明靜態成員變量,靜態內部類可以聲明靜態成員變量。
非靜態內部類對象的創建:
先創建外部類對象,之後外部類對象調用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();
}
}