为什么Number类有一个intValue(),即使子类之间的方法实现是相同的,那么重写它的必要性是什么呢



为什么NumberClass有一个抽象方法intValue()、longValue()等,尽管Numbers应该返回int或long等?为什么他们还不能实现方法呢?

这是因为方法的实现依赖于底层子类。例如,由于处理浮点表示,您必须以不同于Integer的方式确定BigDecimalDoubleintValue()。因此,超类无法总结如何计算这些方法。

以下是Number的直接已知子类:

AtomicIntegerAtomicLongBigDecimalBigIntegerByteDoubleFloatIntegerLongShort

所以他们应该只决定什么应该是相应的int值。

BigDecimal的整数转换逻辑肯定与Double(或Byte)的整数转换电路不同。

但是是的,它们都应该有一个相应的int值。因此Number 中的抽象方法

作为简单的OOPS概念,它们抽象出了更通用的特性,并为专门的类(Sub-classes)提供了选项,以提供更具体的实现。

最新更新