📄 staticmemberclass.java
字号:
//【例4-21】 静态成员类的定义、访问控制、约束与引用。
//程序清单4-21: StaticMemberClass.java
package e4_21;
public class StaticMemberClass {// 主类
public static void main(String[] args) {
// 可直接通过外部类名引用静态成员类:new 外部类名.内部类构造方法( )
Outer.Inner1 inner1 = new Outer.Inner1();
Outer.Inner2 inner2 = new Outer.Inner2();
// 不能使用外部类的实例引用静态成员类
// Outer.Inner2 inner2 = new Outer().new Inner2();
new Test();
// 嵌套静态成员类的使用
Outer.Inner3.Inner4 inner4 = new Outer.Inner3.Inner4();
// 调用外部类实例方法
new Outer().instanceMethod();
}
}
class Test {
public Test() {
// 成员类的访问控制与成员方法、成员变量的访问控制相同,见表4-2
// 默认成员类可跨类引用
Outer.Inner3 inner3 = new Outer.Inner3();
// 私有成员类只在其外部类中可见,不能跨类引用
// Outer.Inner5 inner5 = new Outer.Inner5();
}
}
class Outer {// 外部类
private int x = 10;
private static int y = 100;
// ①静态成员类能定义于外部类的顶层代码
public static class Inner1 {// 公有静态成员类
public Inner1() {
// 静态成员类能直接访问外部类的静态方法和静态变量
staticMethod();
System.out.println("外部类Outer的静态变量y = " + y);
// 静态成员类不能直接访问外部类的实例方法和实例变量
// instanceMethod();
// System.out.println("外部类Outer的静态变量x = " + x);
System.out.println("静态成员类Inner1的反射是:" + this);
// 静态成员类不能使用"外部类.this",实例成员类则可以使用之
// System.out.println("外部类Outer的反射是:" + Outer.this);
}
}
protected static class Inner2 {// 保护静态成员类
public Inner2() {
System.out.println("静态成员类Inner2的反射是:" + this);
}
}
static class Inner3 {// 默认静态成员类
// ②静态成员类能定义于外部类的其他静态成员类的顶层代码中(嵌套定义)
public static class Inner4 {
public Inner4() {
System.out.println("嵌套静态成员类Inner4的反射是:" + this);
}
}
public Inner3() {
System.out.println("静态成员类Inner3的反射是:" + this);
}
}
private static class Inner5 {// 私有静态成员类
public Inner5() {
System.out.println("静态成员类Inner5的反射是:" + this);
}
}
private static void staticMethod() {// 外部类静态成员方法
// ③静态成员类不能定义于外部类的成员方法
// static class Inner6 { }
// 静态方法中不能使用"外部类.this",实例方法中则可以使用之
// System.out.println("外部类Outer的反射是:" + Outer.this);
}
void instanceMethod() {// 外部类实例成员方法
// 嵌套静态成员类的使用
Inner3.Inner4 inner4 = new Inner3.Inner4();
// 私有静态成员类只在其所在的外部类中被访问
Inner5 inner5 = new Inner5();
// 在实例方法中能使用"外部类.this",求得外部类的反射值
System.out.println("外部类Outer的反射是:" + Outer.this);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -