1.2.3 在外部類中定義內(nèi)部類
如下所示代碼為在外部類中定義兩個(gè)內(nèi)部類及它們的調(diào)用關(guān)系:
public class Outer{
int outer_x = 100;
class Inner{
public int y = 10;
private int z = 9;
int m = 5;
public void display(){
System.out.println("display outer_x:"+ outer_x);
}
private void display2(){
System.out.println("display outer_x:"+ outer_x);
}
}
void test(){
Inner inner = new Inner();
inner.display();
inner.display2();
//System.out.println("Inner y:" + y);//不能訪問(wèn)內(nèi)部?jī)?nèi)變量
System.out.println("Inner y:" + inner.y);//可以訪問(wèn)
System.out.println("Inner z:" + inner.z);//可以訪問(wèn)
System.out.println("Inner m:" + inner.m);//可以訪問(wèn)
InnerTwo innerTwo = new InnerTwo();
innerTwo.show();
}
class InnerTwo{
Inner innerx = new Inner();
public void show(){
//System.out.println(y);//不可訪問(wèn)Innter的y成員
//System.out.println(Inner.y);//不可直接訪問(wèn)Inner的任何成員和方法
innerx.display();//可以訪問(wèn)
innerx.display2();//可以訪問(wèn)
System.out.println(innerx.y);//可以訪問(wèn)
System.out.println(innerx.z);//可以訪問(wèn)
System.out.println(innerx.m);//可以訪問(wèn)
}
}
public static void main(String args[]){
Outer outer = new Outer();
outer.test();
}
}
以上代碼需要說(shuō)明有,對(duì)于內(nèi)部類,通常在定義類的class關(guān)鍵字前不加public 或 private等限制符,若加了
沒有任何影響,同時(shí)好像這些限定符對(duì)內(nèi)部類的變量和方法也沒有影響(?)。另外,就是要注意,內(nèi)部類Inner及
InnterTwo只在類Outer的作用域內(nèi)是可知的,如果類Outer外的任何代碼嘗試初始化類Inner或使用它,編譯就不
會(huì)通過(guò)。同時(shí),內(nèi)部類的變量成員只在內(nèi)部?jī)?nèi)內(nèi)部可見,若外部類或同層次的內(nèi)部類需要訪問(wèn),需采用示例程序
中的方法,不可直接訪問(wèn)內(nèi)部類的變量。
相關(guān)推薦:計(jì)算機(jī)等級(jí)考試二級(jí)Java經(jīng)典算法大全匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |