这并不是一个太多的编程问题,但我最近一直在研究 Java,并且对这门语言感到疑惑。这个问题是不言自明的。类都扩展了Object,并且Object必须是一个对象,因为类extend它。既然对象是类,那么Object扩展如何Object,如果Object是类本身呢?如果我创建一个扩展自身的对象,我会得到:Cycle detected: the type MovingObject cannot extend/implement itself or one of its own member types.那么,如何解释呢?编辑:我不会将其称为重复项,因为将其标记为重复项的问题是要求提供不扩展 Object.class 的类列表。我在问 Object,如果所有类都扩展它,如何扩展它自己。
1 回答
![?](http://img1.sycdn.imooc.com/545865470001bf9402200220-100-100.jpg)
慕沐林林
TA贡献2016条经验 获得超9个赞
java.lang.Object
这种方式很特别。Java 语言规范第8.1.4节指出:
extends 子句不能出现在类 Object 的定义中,否则会发生编译时错误,因为它是原始类,没有直接的超类。
如果您查看 Java 标准库的任何实现,您会发现源代码java.lang.Object
实际上没有 extends 子句(并且因为 Object 类是原始的并且在规范中有特殊处理,所以没有extends Object
隐式存在)。
此外,您可能会观察到 的值Object.class.getSuperclass()
正是空引用。
深入研究本机代码,经过几层委派后,似乎在此处强制执行此规则。
添加回答
举报
0/150
提交
取消