【发布时间】:2015-05-15 11:23:49
【问题描述】:
据我了解
最后一节课
final 类只是一个无法扩展的类。
具有单个无参数私有构造函数的类
具有私有构造函数的类不能被实例化,除非在同一个类中的形式。这使得从另一个类扩展它毫无用处。但这并不意味着它根本不能被子类化,在内部类中我们可以扩展和调用私有构造函数。
所以我的理解是,如果我们创建一个带有单个无参数私有构造函数的类,那么将该类声明为 final 是没有意义的。那么为什么Java中的System类,虽然只有一个无参数的私有构造函数,却声明为final类?
我听说进入班级决赛有一些性能提升。这是正确的吗?这是将 System 类声明为 final 的唯一原因吗?请澄清我为什么 Java 实现了这样的 System 类。
【问题讨论】:
-
它是最终的,所以它不能被扩展,它有一个私有的构造函数,所以它不能被实例化(因为应该只有一个
System)——它们并不真正相关。 -
私有构造函数用于创建单例类,如果你扩展它,那么你可以创建超类的对象,以便限制该系统对象
-
我想,这只是为了让每个人都清楚:甚至不要尝试扩展它。我认为在这种特殊情况下不太可能有任何性能提升,因为
System没有虚拟方法,只有静态方法。
标签: java final private-constructor