假設(shè) A 是一個自定義類,并考慮以下匿名內(nèi)部類的聲明:A Obj = new A() { @Override public String toString() { return "Hello!"; }}在這種情況下,Obj 是一個匿名內(nèi)部類的實例,其 toString 方法已被覆蓋。既然是用類型A聲明的,那么匿名類一定是A的子類。那么,為什么這個類不稱為匿名子類而不是匿名內(nèi)部類呢?“內(nèi)在”從何而來?
3 回答

慕尼黑8549860
TA貢獻(xiàn)1818條經(jīng)驗 獲得超11個贊
是的,obj是A. 您可以通過調(diào)用來驗證超類obj.getClass().getSuperclass():
這會打印如下內(nèi)容:
class stackoverflow.Test$1 //obj.getClass()
class stackoverflow.A //obj.getClass().getSuperclass()
那么,為什么這個類不稱為匿名子類而不是匿名內(nèi)部類呢?
這些只是語義。這是一個名字。然而,可能有很多原因,其中之一是匿名類可以直接實現(xiàn)接口:
Runnable r = new Runnable() {
public void run() {}
}
這不是任何東西的子類(而是 Object,但什么不是 Object 的子類......),但它也是一個匿名類。
添加回答
舉報
0/150
提交
取消