這并不是一個太多的編程問題,但我最近一直在研究 Java,并且對這門語言感到疑惑。這個問題是不言自明的。類都擴展了Object,并且Object必須是一個對象,因為類extend它。既然對象是類,那么Object擴展如何Object,如果Object是類本身呢?如果我創(chuàng)建一個擴展自身的對象,我會得到:Cycle detected: the type MovingObject cannot extend/implement itself or one of its own member types.那么,如何解釋呢?編輯:我不會將其稱為重復項,因為將其標記為重復項的問題是要求提供不擴展 Object.class 的類列表。我在問 Object,如果所有類都擴展它,如何擴展它自己。
1 回答

慕沐林林
TA貢獻2016條經驗 獲得超9個贊
java.lang.Object
這種方式很特別。Java 語言規(guī)范第8.1.4節(jié)指出:
extends 子句不能出現在類 Object 的定義中,否則會發(fā)生編譯時錯誤,因為它是原始類,沒有直接的超類。
如果您查看 Java 標準庫的任何實現,您會發(fā)現源代碼java.lang.Object
實際上沒有 extends 子句(并且因為 Object 類是原始的并且在規(guī)范中有特殊處理,所以沒有extends Object
隱式存在)。
此外,您可能會觀察到 的值Object.class.getSuperclass()
正是空引用。
深入研究本機代碼,經過幾層委派后,似乎在此處強制執(zhí)行此規(guī)則。
添加回答
舉報
0/150
提交
取消