私有构造函数可以防止该类在外部被实例化

来源:互联网 发布:vscode 支持xp吗 编辑:程序博客网 时间:2024/05/16 12:19

例如

[java] view plain copy
  1. public class DiskUtil {  
  2.   private DiskUtil() {  }  
  3.   
  4.   public static FUNC(){}  
  5.   
  6. }  

这样的类,往往提供一些静态的函数来生成该类的实例,只要这个类有公开的属性、方法,得到实例引用的一方还是可以调用的,一个例子是singleton。


外面调用只能调用DiskUtil 的静态函数Func,而不能A a = new A();私有构造函数只能在函数内部调用,外部不能实例化,所以私有构造函数可以防止该类在外部被实例化


常见的应用是工具类和单例模式

[java] view plain copy
  1. package test.reflect;  
  2. public class Singleton {  
  3.     private static Singleton s= null;  //2.在本类内部声明对象S
  4.       
  5.     private Singleton() {  //1.私有构造对象 防止外部实例化
  6.           
  7.     }  
  8.       
  9.     public static Singleton getInstance() {   //创建外部程序可以调用该实例的方法 return s对象;Singleton是本类类型相当于int void。。。
  10.         if (s == null) {  
  11.             synchronized (Singleton.class) {  
  12.                 if (s == null) {  
  13.                     s = new Singleton();  
  14.                 }  
  15.             }  
  16.         }  
  17.         return s;  
  18.     }  
  19. }