静态内部类:
1、用static修饰的内部类,称为静态内部类,完全属于外部类本身,不属于外部类某一个对象
2、static关键字的作用是把修饰的成员变成类相关,而不是实例相关
3、静态内部类可以包含静态成员,也可以包含非静态成员
4、静态类内部不可以访问外部类的实例成员,只能访问外部类的类成员,即使是静态内部类的实例方法也不能访问外部类的实例成员,只能访问外部类的静态成员
5、外部类不可以定义为静态类,Java中静态类只有一种,那就是静态内部类,顶级类不能用static 修饰
public class StaticClassW{
private int a=5;
private static int b=10;
private static class StaticClassN{
public static int c=20;
public int d=30;
public static void print(){
//-下面代码会报错,静态内部类不能访问外部类实例成员
//System.out.println(a);
//-静态内部类只可以访问外部类类成员
System.out.println(b);
}
public void printA(){
System.out.println(d);
}
}
private static class StaticClassNN{
public int d=40;
public void printA(){
System.out.println(d);
}
}
public static void main(String[] args){
//-要想访问静态内部类的实例成员,需先创建实例对象,才可以调用,因为实例成员是属于实例的
StaticClassN sc=new StaticClassN();
sc.printA();
StaticClassNN sc1=new StaticClassNN();
sc1.printA();
//-访问静态内部类的类成员,可以直接由该类访问,因为类成员是属于类的
StaticClassN.print();
System.out.println(StaticClassN.c);
//-要想访问静态内部类的实例成员,需先创建实例对象,才可以调用,因为实例成员是属于实例的,下面代码编译就会报错
//StaticClassN.printA();
}
}
编译结果:

运行结果:

注:编译结果中$1.class为匿名类
热心技术,并兼吃喝,偶谈风月,不言国事.
浙公网安备 33010602011771号