java - 为什么Java的数字类不相互扩展?

标签 java inheritance numbers

在 Java 中,为什么内置的数字类不相互扩展? Long 不应该扩展 Integer 扩展 Short 扩展 Byte,Double 扩展 Float 吗?

通常,当存在"is"关系时,通常会使用继承。那么每个 Integer 都是 Long 吗?我想是的。

我能想到的唯一可能的解释是无法正确处理溢出。例如,(byte)100 + (byte)100-112,而 (short)100 + (short)100200。然而,似乎应该有比保留错误行为更好的理由。

最佳答案

您的问题实际上可以通过两种不同的方式来解决:

如果我们谈论的是原语,那么关系就倒过来了。

但是,如果您询问的是 IntegerDoubleLong 等类,那么所有数。

重要的是要指出,在 Java 中作为对象的数字源于一个常见的 Numberhere .像您描述的那样在层次结构中分解它们没有多大意义,因为所有数字之间的方法本质上是相同的,尽管它们占用的内存大小不同。

简而言之,Java 中的层次结构是由类共享的关系(通常是方法)定义的,而不是它们在内存中占用的大小。

关于java - 为什么Java的数字类不相互扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26878117/

相关文章:

Haskell,算法所有可能的数字组合

java - 正则表达式在回车和新行上(可能)出现问题

java - 如何实现该功能?

c# - 在 C# 中继承泛型

java - 如何有效地浏览 Java 中的扩展和实现?

javascript - 在 javascript 中用逗号格式化数字变量的最佳方法是什么

java - 返回低于平均值的数字数量

java - 从中间代码到Java字节码(龙书)

Java - 无法加密 RDP 文件中的 Windows 远程桌面密码

c++ - 当另一个成员存在另一个签名时,调用纯虚拟成员的正确方法是什么?