为了账号安全,请及时绑定邮箱和手机立即绑定

既然所有的类都扩展了Object,而Object是一个类,那么Object怎么能扩展Object呢?

既然所有的类都扩展了Object,而Object是一个类,那么Object怎么能扩展Object呢?

慕妹3242003 2021-07-09 14:01:34
这并不是一个太多的编程问题,但我最近一直在研究 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 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

java.lang.Object这种方式很特别。Java 语言规范第8.1.4节指出:

extends 子句不能出现在类 Object 的定义中,否则会发生编译时错误,因为它是原始类,没有直接的超类。

如果您查看 Java 标准库的任何实现,您会发现源代码java.lang.Object实际上没有 extends 子句(并且因为 Object 类是原始的并且在规范中有特殊处理,所以没有extends Object隐式存在)。

此外,您可能会观察到 的值Object.class.getSuperclass()正是空引用。

深入研究本机代码,经过几层委派后,似乎在此处强制执行此规则。


查看完整回答
反对 回复 2021-07-14
  • 1 回答
  • 0 关注
  • 452 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信