/*
当内部类在成员位置上,就可以被成员修饰符所修饰。
比如:private:将内部类定义在外部类中进行封装。
static:内部类就具备static的特性。
当内部类被static修饰后,只能直接访问外部类中的static成员。
出现了访问局限。
在外部其他类中,如何直接访问static内部类的非静态成员呢?
new 外部类名(Outer).内部类()(Inner()).函数名();
在外部其他类中,如何直接访问static内部类的静态成员呢?
Outer.inner.function(); 外部类名.内部类名.方法名();
*/
class Outer1 {
private static int x = 2; //因为内部类静态了,而且有调用到了此变量。所以此变量也得静态
static class Inner1 { //静态内部类
public void show() {
System.out.println(x);
}
}
static class Inner2 { //把类和函数都静态化
private static int x = 5;
public static void show() {
System.out.println(x);
}
}
}
class OuterDemo1 {
public static void main(String[] args) {
new Outer1.Inner1().show(); //因为内部类是静态的。所以可以直接new 外部类名.内部类名
Outer1.Inner2.show(); //因为内部类和内部类的函数都是静态的。所以可以直接类名调用
}
} |
|