我是编程新手,正在学习“Head First Java”,我刚刚看到一个问题,其中使用了这样的Math
类
int x= Math.round(float value);
有人提到我们不需要实例化 Math 类,因为它的构造函数设置为 private
。这意味着什么?直到现在我读到我们需要实例化那个类和引用变量来玩弄类的方法和实例变量 Math 类是如何工作的?
最佳答案
we don't need to instantiate Math class because its Constructor is set Private
因为 Math
类中的所有方法都是 static
,所以您可以使用类名来调用它们。所以实例化类是没有用的,因此构造函数被声明为private
。它还会阻止 Math
类的子类化,因为它是唯一 构造函数。
查看open source code :
Don't let anyone instantiate this class.
private Math() {} // only constructor defined in Math class
Math
类的方法不依赖于类的内部状态,它们就像实用函数一样。所以将它们声明为 static
是明智的。 static
方法可以通过直接使用类名来调用,因此不需要实例化类。它们属于该类,而不是该类的特定对象。
可以引用JLS 8.4.3.2 :
A class method is always invoked without reference to a particular object.
关于java - 使用 Math 类而不实例化它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17546234/