區域性內部類 匿名內部 匿名內部類的面試題

2021-10-07 16:30:14 字數 2419 閱讀 7319

1、如何宣告?

【修飾符】 class 外部類 【extends 父類】 【implements 父介面們】

}說明:區域性內部類的修飾符

(1)許可權修飾符:沒有

(2)static沒有

(3)abstract可以有

(4)final可以有

2、使用

(1)區域性內部類有作用域

(2)區域性內部類中是否能使用外部類的非靜態成員變數,是要看所在的方法是否是靜態的

(3)區域性內部類可以使用所在方法的區域性變數,但是該區域性變數必須加final宣告

如果在jdk1.8之前必須要手動加final

在jdk1.8之後,自動加final也就是預設是final

3、區域性內部類也有位元組碼檔案

外部類$數字內部類

4、成員

區域性內部類中不能有靜態的成員

public

class

testlocalinner

class

outer}

inner in =

newinner()

; in.

test()

;}//inner的作用域只能到這裡

public

static

void

outmethod()}}}

1、宣告格式位置:在建立物件的位置特點:一邊宣告類一邊建立物件,匿名內部類只有唯一的物件

new 父類(【形參列表】);

new 介面(介面沒有形參列表);

2、匿名內部類是一種特殊的區域性內部類,凡是區域性內部類的限制,匿名內部類都有

(1)在匿名內部類中使用外部類的方法的區域性變數,需要加final修飾

(2)在匿名內部類中使用外部內部類的非靜態成員變數,要受到所在方法的限制,

所在方法是靜態的話,就不能使外部類的非靜態的成員

3、位元組碼

外部類$數字.class

4、成員

不能有靜態成員

5、匿名內部類沒有名字,也沒有修飾符

public

class

testnonameinner

; system.out.

println

(in.

getclass()

);//執行時型別

//建立myclass子類的匿名內部類的物件

//多型引用

myclass my =

newmyclass()

};my.

test()

;//直接用my呼叫,應為子類重寫了父類的方法,直接呼叫子類中重寫的方法

myclass my2 =

newmyclass

("有參構造")}

; my2.

test()

;//建立myinter的實現類的匿名內部類物件

//多型引用

題目:(1)用匿名內部類的形式建立乙個object的子類

(2)並且在子類中宣告乙個方法 public void test(){}

列印一句話

(3)呼叫這個方法

public

class

testobject

};//這裡也沒有辦法強轉,因為子類是匿名的

obj.test();*/

//用匿名內部類的匿名物件.方法

newobject()

}.test();}}

內部類,區域性類,匿名內部類

內部類,顧名思義就是類內部的類。public class student public void setcolor string color public intgetnum public void setnum int num 內部類自己的方法 public void write 區域性類,就是定...

內部類 成員內部類 區域性內部類 匿名內部類

public class 外部類 private int num 0 外部類如果要訪問內部類的成員,則需要通過內部類的物件訪問 使用方式 1.外部類使用內部類,主函式再使用外部類 2.通過new的方式 外部類.內部類 物件名 new 外部類 new 內部類 定義在方法內部的類,就是區域性內部類,只有...

成員內部類,區域性內部類,靜態內部類,匿名內部類

成員內部類 class demo1 innerclass a 內部類概述 b 內部類訪問特點 a 內部類可以直接訪問外部類的成員,包括私有。b 外部類要訪問內部類的成員,必須建立物件。外部類名.內部類名 物件名 外部類物件.內部類物件 class outer class demo2 innercla...