你好,new一個方法不是生成一個對象,怎麼就生成了一個匿名類呢
我對new關鍵詞的用法不是很清楚
先看段偽代碼
abstract class Father(){
....
}
public class Test{
Father f1 = new Father(){ .... } //這裡就是有個匿名內部類
}
一般來說,new 一個對象時小括號後應該是分號,也就是new出對象該語句就結束了。
但是出現匿名內部類就不一樣,小括號後跟的是大括號,大括號中是該new 出對象的具體的實現方法。
因為我們知道,一個抽象類是不能直接new 的,必須先有實現類了我們才能new出它的實現類。
上面的偽代碼就是表示new 的是Father的實現類,這個實現類是個匿名內部類。
其實拆分上面的匿名內部類可為
class SonOne extends Father{
... //這裡的代碼和上面匿名內部類,大括號中的代碼是一樣的
}
public class Test{
Father f1 = new SonOne() ;
}