我知道byteValue()和shortValue()具有与其他抽象方法不同的实现,并且是在JDK1.1中添加的。如果它是接口,则不可能实现。但是,当开发人员编写Number类时,为什么要使其成为抽象类呢?仅仅是因为他们期望以后会添加更多方法吗?我只需要权威引用所支持的答案。非常感谢大家花时间审核我的问题并给出答案。
这里没有人会知道设计师的想法,但是抽象类和接口用于不同的目的。
(在Java中)类在严格的层次结构中继承,并且此层次结构是可用于确保分离不相关的对象类的工具。当整个层次结构的核心功能相似时,类也更具逻辑性。
例如,对于抽象类Number
,Letter
不可能同时具有两者。使用接口,可以创建一个实现这两个都没有意义的类。
另一方面,接口通常用于以正式方式公开类的(通常是)一小部分,因此它们可被仅使用接口中指定功能的可重用逻辑使用。他们更经常用于添加辅助功能,比如Serializable
,Comparable
或者Runnable
。
一个示例,Printable
并且Comparable
将是可怕的抽象类,因为它将使Comparable
对象也成为不可能Printable
。
因此,设计人员可能专门选择了Number
一个抽象类,以确保只有一个类层次结构可以是数字,而不能有其他任何东西。也许它可以允许将来的优化,如JDK那样,JDK将这些类视为特殊情况String
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句