静态内部类:
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为匿名类
热心技术,并兼吃喝,偶谈风月,不言国事.