【问题标题】:Why is java "highest" superclass called "Object"?为什么java“最高”超类称为“对象”?
【发布时间】:2012-03-14 17:41:12
【问题描述】:

我有一个奇怪的(也许是愚蠢的)问题:我想知道....为什么java“Object”类称为“Object”,而不是“Class”?

例如,对于具有以下层次结构的 ArrayList

Object ->
Collection ->
List ->
ArrayList 

好的:ArrayList 是一个 List...List 是一个 Collection...但是 Collection(所有集合的类)不是 Object...它是一个类!

【问题讨论】:

  • 所有对象的默认超类是Object。如果你声明一个没有超类的类,它的超类就是 Object。
  • 你不可能真正拥有一个对象的超类,对吗?只有类应该有超类。

标签: java oop object


【解决方案1】:

想想对象本身是什么。 ArrayList 是一个列表,是吗?它也是一个对象。它不是一类对象。类名描述了该类的实例代表什么。

一个集合不是一个集合类——它是一个一个集合(它是一个对象)。

【讨论】:

  • List 和 Collection 都不是类,它们是接口。
  • 这句话:“类名描述了该类的实例代表什么。”回答了我的问题!谢谢!
【解决方案2】:

好吧,你使用Object 来声明一个(没有更好地指定)对象的instance,就像你使用Collection 来声明一个instance收藏。

您也可以声明一个 Class 类型的对象,使用 java.lang.Class<T>,其中一个 instance 表示该对象的 Class

【讨论】:

    【解决方案3】:

    Collection 是一个接口(实际上是一种特殊类型的类)。

    A Collection 是一个对象。

    【讨论】:

    • 我的问题是:为什么不使用 Class 而不是 objec:Collection 的实例是 Object...但是 Class(或接口)Collection 不是 Object...它是一个“类”
    • @Salles Object 是所有对象的类; Collections 是所有集合的类。
    【解决方案4】:

    你的假设是错误的。 ArrayList 的正确层次结构是:
    数组列表 --> 抽象列表 --> 抽象集合 --> 对象

    所以即使是 ArrayList 也将 Object 作为其层次结构中的第一件事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多