结论:
1.静态内部类只能够访问外部类的静态成员,非静态内部类可以访问外部类的所有成员。
2.静态内部类能有静态成员(方法、属性),非静态内部类不能有静态成员(方法、属性)。
3.静态内部类和非静态内部类在创建时有区别。静态内部类即使外部类没有被创建时依然存在。非静态内部类必须通过外部对象进行调用。
package lx.test;
public class OutClassTest {
int out1=1;
static int out2=1;
void out(){
System.out.println("非静态");
}
static void outstatic(){
System.out.println("静态");
}
public class InnerClass{
void InnerClass(){
System.out.println("InnerClass!");
System.out.println(out1);
System.out.println(out2);
out();
outstatic();
}
// static void inner(){} static int i=1; 非静态内部类不能有静态成员(方法、属性)
}
public static class InnerstaticClass{
void InnerstaticClass(){
System.out.println("InnerstaticClass");
// System.out.println(out1);out(); 静态内部类只能够访问外部类的静态成员
System.out.println(out2);
outstatic();
}
static void innerstatic(){} static int i=1;//静态内部类能有静态成员(方法、属性)
}
public static void main(String args[]){
OutClassTest a=new OutClassTest();
//创建静态内部类
new OutClassTest.InnerstaticClass().InnerstaticClass();
//创建非静态内部类
a.new InnerClass().InnerClass();;
}
}