1.定义
被静态修饰符static修饰的成员内部类称之为静态内部类。
格式:
class A{
static class B {
}
}
例子:
public class OuterDemo { //定义外部的成员变量,包括静态变量c private int a=1; private int b=2; private static int c=3; public void methodA(){ System.out.print(a); } public static void methodB (){ System.out.print(c); } static class Inner{ private int d=4;//内部类成员变量 static int e=5; public void method(){//内部类方法 System.out.print(a);// 报错,在静态内部中无法直接访问外部类的非静态成员 System.out.print(b); methodA(); methodB();//在静态内部类中可以直接访问外部类的静态变成员 3 System.out.print(c); //3 OuterDemo outer=new OuterDemo(); System.out.println(outer.a);// 1 /*要在内部类中访问外部类非成员变量 ,必须在内部类中创建外部类对象*/ System.out.print(outer.b);// 2 outer.methodA();// 1 System.out.print(d);// 4 System.out.print(e);// 5 } } public static void main(String[] args) { //实例化静态内部类的方法,格式 //外部类.内部类 对象名=new 外部类.内部类(); OuterDemo.Inner Inner=new OuterDemo.Inner(); Inner.method(); } }
运行结果如下(去除报错部分):
3312145
总结
1.静态内部类能够访问外部的静态成员,无法直接访问非静态成员。
2.要想在内部类中访问外部类的非静态成员,必须在内部类中创建外部类的对象,通过对象来调用外部类的非静态方法和成员变量。
3.如何实例化内部类?
不需要先创建外部类对象,具体格式:外部类.内部类 对象名=new 外部类.内部类();