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 外部类.内部类();
340

被折叠的 条评论
为什么被折叠?



