1.2.4 在方法中定義內(nèi)部類
如下所示代碼為在方法內(nèi)部定義一個(gè)內(nèi)部類:
public class FunOuter {
int out_x = 100;
public void test(){
class Inner{
String x = "x";
void display(){
System.out.println(out_x);
}
}
Inner inner = new Inner();
inner.display();
}
public void showStr(String str){
//public String str1 = "test Inner";//不可定義,只允許final修飾
//static String str4 = "static Str";//不可定義,只允許final修飾
String str2 = "test Inner";
final String str3 = "final Str";
class InnerTwo{
public void testPrint(){
System.out.println(out_x);//可直接訪問外部類的變量
//System.out.println(str);//不可訪問本方法內(nèi)部的非final變量
//System.out.println(str2);//不可訪問本方法內(nèi)部的非final變量
System.out.println(str3);//只可訪問本方法的final型變量成員
}
}
InnerTwo innerTwo = new InnerTwo();
innerTwo.testPrint();
}
public void use(){
//Inner innerObj = new Inner();//此時(shí)Inner己不可見了。
//System.out.println(Inner.x);//此時(shí)Inner己不可見了。
}
public static void main(String[] args) {
FunOuter outer = new FunOuter();
outer.test();
}
}
從上面的例程我們可以看出定義在方法內(nèi)部的內(nèi)部類的可見性更小,它只在方法內(nèi)部
可見,在外部類(及外部類的其它方法中)中都不可見了。同時(shí),它有一個(gè)特點(diǎn),就是方法
內(nèi)的內(nèi)部類連本方法的成員變量都不可訪問,它只能訪問本方法的final型成員。同時(shí)另一個(gè)
需引起注意的是方法內(nèi)部定義成員,只允許final修飾或不加修飾符,其它像static等均不可用。
相關(guān)推薦:計(jì)算機(jī)等級(jí)考試二級(jí)Java經(jīng)典算法大全匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |