开发者社区> 问答> 正文

为什么是数组对象,但不能用作基类?

Java语言规范指定

在Java编程语言中,数组是对象(第4.3.1节),是动态创建的,并且可以分配给对象类型(第4.3.2节)的变量。所有的类方法Object都可以在数组上调用。

因此,考虑数组对象-为什么Java的设计者做出决定不允许继承和覆盖从它,例如,toString()还是equals()?

当前的语法不允许创建以数组为基类的匿名类,但我认为这不是做出它们决定的原因。 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-09 11:59:14 536 0
1 条回答
写回答
取消 提交回答
  • Java是非对象语言和当时一切都是对象的非常慢的语言之间的折衷(想想Smalltalk)。

    甚至在较新的语言中,在数组(通常是地图)的语言级别上具有快速结构也被视为战略目标。大多数人不希望数组具有可继承对象的重量,并且在JVM像JIT一样发展之前,当然没有人希望这样做。

    这就是为什么数组虽然是对象,却没有被设计为类实例(“对象是类实例或数组”)。能够重写数组上的方法几乎没有什么好处,并且肯定不能抵消需要检查正确方法的需求(我认为还不足以抵消一个方法)增加的代码读取难度,类似于您重写运算符时发生的情况。

    2020-02-09 11:59:24
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
继承与功能组合 立即下载
建立联系方法之一 立即下载
对象的生命期管理 立即下载