1.2.2 靜態(tài)嵌套類
如下所示代碼為定義一個靜態(tài)嵌套類,
public class StaticTest {
private static String name = "javaJohn";
private String id = "X001";
static class Person{
private String address = "swjtu,chenDu,China";
public String mail = "josserchai@yahoo.com";//內(nèi)部類公有成員
public void display(){
//System.out.println(id);//不能直接訪問外部類的非靜態(tài)成員
System.out.println(name);//只能直接訪問外部類的靜態(tài)成員
System.out.println("Inner "+address);//訪問本內(nèi)部類成員。
}
}
public void printInfo(){
Person person = new Person();
person.display();
//System.out.println(mail);//不可訪問
//System.out.println(address);//不可訪問
System.out.println(person.address);//可以訪問內(nèi)部類的私有成員
System.out.println(person.mail);//可以訪問內(nèi)部類的公有成員
}
public static void main(String[] args) {
StaticTest staticTest = new StaticTest();
staticTest.printInfo();
}
}
在靜態(tài)嵌套類內(nèi)部,不能訪問外部類的非靜態(tài)成員,這是由Java語法中"靜態(tài)方法不能直接訪問非靜態(tài)成員"所限定。
若想訪問外部類的變量,必須通過其它方法解決,由于這個原因,靜態(tài)嵌套類使用很少。注意,外部類訪問內(nèi)
部類的的成員有些特別,不能直接訪問,但可以通過內(nèi)部類來訪問,這是因?yàn)殪o態(tài)嵌套內(nèi)的所有成員和方法默認(rèn)為
靜態(tài)的了。同時注意,內(nèi)部靜態(tài)類Person只在類StaticTest 范圍內(nèi)可見,若在其它類中引用或初始化,均是錯誤的。
相關(guān)推薦:計算機(jī)等級考試二級Java經(jīng)典算法大全匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |