靜態內部類作爲類的靜態成員存在於某個類中,也稱爲嵌套類。在創建靜態內部類時不需要外部類對象的存在。其實質是一個放置在某個類內部的普通類。要定義一個靜態類只需在類的定義中加入關鍵字static即可。
package JAVA_Project_01_05;
//靜態內部類作爲類的靜態成員存在於某個類中,也稱爲嵌套類。在創建靜態內部類時不需要外部類對象的存在。其實質是一個放置在某個類內部的普通類。要定義一個靜態類只需在類的定義中加入關鍵字static即可。
//使用靜態內部類的技術要點如下:
//
//· 聲明靜態內部類的語法格式:staticclass類名。靜態內部類不可以用private進行定義。
//
//· 關鍵字static說明靜態內部類在創建對象時不依賴於外部對象的存在,並不是說這個類本身是靜態的。
//
//· 靜態內部類只能訪問外部類的靜態成員,不能訪問外部類的非靜態成員。它可以定義靜態或者非靜態的成員。
//
//· 靜態內部類的對象可以直接生成,不需要外部類的對象來生成,可以看作靜態內部類是一頂級類。
public class TextStaticInnerClass {//操作靜態內部類的類
private static int num = 1;
private int count = 10;
public static void outer() {
System.out.println("外部類的靜態方法!");
}
public void outer_1() {
System.out.println("外部類的非靜態方法!");
}
static class Inner {
static int inner_num = 100;
int inner_count = 200;
static void inner_outer() {
System.out.println("訪問外部類的靜態成員" + num);
outer();//訪問外部類的靜態方法
}
void inner_outer_1() {
System.out.println("靜態內部類的非靜態方法");
outer();//訪問外部類的靜態方法
}
}
public void outer_2() {//外部類訪問靜態內部類的靜態成員:內部類.靜態成員
System.out.println(Inner.inner_num);
Inner.inner_outer();//訪問靜態內部類的靜態方法
Inner inner = new Inner();//實例化對象
inner.inner_outer_1();//訪問靜態內部類的非靜態方法
}
public static void main(String[] args) {//Java程序主入口處
TextStaticInnerClass inner = new TextStaticInnerClass();
inner.outer_2();//調用方法
}
}
/*
(1)在程序類中定義靜態變量、非靜態變量、靜態方法、非靜態方法以及一個靜態內部類。在靜態內部類中定義靜態變量、非靜態變量、靜態主法以及非靜態方法。默認的非靜態方法的訪問修飾符爲protected,可以被該類所在的包內成員以及非包內的子類成員訪問。
(2)在靜態內部類的方法中只能訪問外部類的靜態變量及靜態方法。外部類訪問靜態內部類的語法格式爲:靜態內部類.靜態變量(或靜態方法())。如果外部類訪問內部類的非靜態成員,需要先實例化內部類。
*/