?? 40d915fc1b75001d1dddb6604daa6ad2
字號:
//【例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 + -