- 静态类访问外部类成员(比如:静态属性),访问方式:直接访问所有静态成员。
- 外部类访问静态内部类,访问方式:创建对象,再访问。
- 外部其他类访问静态内部类(三种方式)。
- 如果外部类和静态内部类成员重名,静态内部类访问时,遵循就近原则,如果想访问外部类的成员,则可以使用(外部类名.成员)去访问。 ```java package test;
public class Main { public static void main(String[] args) { Outer outer = new Outer(); outer.hi();
//外部其他类 使用静态内部类
//方式1
//因为静态内部类,是可以通过类名直接访问(前提是满足访问权限)
System.out.println("方法一:");
Outer.Inner inner = new Outer.Inner();
inner.say();
//方式2
//编写一个方法,可以返回静态内部类的对象实例.
System.out.println("方法二:");
Outer.Inner inner1 = outer.getInner();
inner1.say();
//方式3
//编写一个静态方法,可以返回静态内部类的对象实例.
//不用创建对象
System.out.println("方法二:");
Outer.Inner inner01 = Outer.getInner01();
inner01.say();
}
}
class Outer { //外部类 private int n1 = 10; private static String name = “WTY2002”; private static void cry() {}
//Inner就是静态内部类
//放在外部类的成员位置,使用static 修饰
//2. 可以添加任意访问修饰符(public、protected 、默认、private),因为它的地位就是一个成员
//3. 作用域 :同其他的成员,为整个类体
public static class Inner {
private static String name = "52编程";
public void say() {
//1. 可以直接访问外部类的所有静态成员,包含私有的,但不能直接访问非静态成员
//System.out.println(n1);//报错!!!
//如果外部类和静态内部类的成员重名时,静态内部类访问的时,
//默认遵循就近原则,如果想访问外部类的成员,则可以使用 (外部类名.成员)
System.out.println("name = " + name);
System.out.println("外部类name = " + Outer.name);
cry();
}
}
//5. 外部类访问静态内部类,访问方式:创建对象,再访问。
public void hi(){
Inner inner = new Inner();
inner.say();
}
public Inner getInner(){
return new Inner();
}
public static Inner getInner01(){
return new Inner();
}
} ```