【问题标题】:How to not extend the Object class in Java?如何不扩展 Java 中的 Object 类?
【发布时间】:2020-03-19 08:19:14
【问题描述】:

默认情况下,Java 中的每个类都扩展Object 类。 (所以总是会发生单继承)

是否有任何类不扩展 Object 类? (例如 int 可能是类 int 的实例,但不是对象)

我们能否以某种方式创建自己的不扩展Object 的类?也许通过修改javac的最终代码不扩展Object类,或者创建我们自己的类来超越对象类的构造函数至少要做的事情以避免异常行为?

【问题讨论】:

  • 没有“双重继承”。您可以扩展 soms 用户定义的类,而后者又必须将 Object 向下扩展,因为这是默认设置。您的新类现在还通过继承扩展 Object。例如:A 是一个 B 其中是一个 对象。所以 A 也是一个对象。

标签: java javac


【解决方案1】:

int 是一个原语,因此我们不能说它扩展了任何东西。

当涉及到您的问题时:

有没有不扩展Object类的类?

你已经回答了上面的字面意思:

Java 中的每个类都扩展了 Object 类

P.S.:我们不能说存在双重继承,因为一个类扩展了Object 和其他一些类,因为那个“其他类”也扩展了Object。实际上,类是其所有超类型的子类型,例如:

HashMap m = new LinkedHashMap();
AbstractMap m = new LinkedHashMap();
Object m = new LinkedHashMap();

为简洁起见,省略类型参数。

编辑:参考关于什么是对象和什么不是对象的讨论,JLS §4.3.1 给出了答案:

对象是类实例或数组。

【讨论】:

  • @Mr.Stackoverflow 没有,因为没有 int 这样的类。
  • 有一个 Integer 类。
  • 唯一不扩展 ObjectclassObject 本身
  • Any 打印被转换为字符串某处下一行
  • 你为什么要那样做?
猜你喜欢
  • 2018-05-16
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 2015-01-25
相关资源
最近更新 更多