1、简介
静态内部类就是用saitic关键字修饰的内部类类,是与类共享的,所以静态内部类的对象不依赖于外部类的对象,可直接创建。
2、语法
//定义外部类
class Outer {
//1.外部类成员
//2.成员内部类
[访问修饰符] static class 内部类名 {
//3.内部类成员
}
}
3、要点
静态内部类定义在类中,任何方法外,用static定义
静态内部类只能访问外部类的静态成员
生成(new)一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别
静态内部类的对象可以直接生成:Outer.Inner in = new Outer.Inner(); 而不需要通过生成外部类对象来生成。这样实际上使静态内部类成为了一个顶级类。
静态内部类不可用private来进行定义。
可以直接访问外部类的静态成员,不能直接访问外部类的实例成员。
4、例子
//外部类
public class Outer {
int count1 = 100 ;
static int count2 = 200 ;
void test() {
Inner inner = new Inner() ;
inner.display();
}
//静态内部类
public static class Inner {
void display() {
//错误:静态内部类不允许访问外部类的非静态成员
//System.out.println(count1);
System.out.println(count2);
}
}
}
public class MainTest {
public static void main(String[] args) {
//内部类只能在内部使用(内部类声明为private)
Outer outer = new Outer() ;
outer.test() ;
//内部类被外部使用,语法为:
//外部类.内部类 内部类对象 = new 外部类.内部类() ;
Outer.Inner inner = new Outer.Inner();
inner.display();
}
}