本文涉及的概念:
1.在面向对象编程中,在什么场景下会需要做到让一个类不能被实例化
2.让一个类不能被实例化的方法
什么样的场景会需要让一个类不能被实例化
工具类(utility class),实例化对它们没有意义的工具类。这时候,就要做到不让该类被实例化
java.lang.Math:
把与Math相关的基本类型的值和相关的方法组合到该Math类中。Math类不需要实例化,使用了私有构造器。不过,它可以在Math类中内部被实例化。
使用私有构造器,没有子类;使用final修饰,没有子类。
packagejava.lang;importjava.util.Random;public final classMath {/*** Don't let anyone instantiate this class.*/
privateMath() {}/*** The {@codedouble} value that is closer than any other to
* e, the base of the natural logarithms.*/
public static final double E = 2.7182818284590452354;public static final double PI = 3.14159265358979323846;public static double sin(doublea) {return StrictMath.sin(a); //default impl. delegates to StrictMath
}
....public static double toRadians(doubleangdeg) {return angdeg / 180.0 *PI;
<