私有化构造函数的作用

例如

public class DiskUtil {
  private DiskUtil() {  }

  public static FUNC(){}

}

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

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

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

package test.reflect;
public class Singleton {
	private static Singleton s= null;

	private Singleton() {

	}

	public static Singleton getInstance() {
		if (s == null) {
			synchronized (Singleton.class) {
				if (s == null) {
					s = new Singleton();
				}
			}
		}
		return s;
	}
}
时间: 2024-08-02 22:37:02

私有化构造函数的作用的相关文章

类和对象的方法与属性---懒加载与私有事件---单例与私有化构造函数

对象属性: 1.private修饰的属性:只能在本类内部访问,分类和外部都不能访问(彻底私有) 2.fileprivate修饰的属性:在本类和分类中可以访问,外部不能访问(部分私有) 3.直接用let或var修饰的属性:在本类.分类和外部都可以访问(开放) 4.在分类中只能声明计算属性,不能声明存储属性 1 // 属性:可以被外界访问 2 var name:String? 3 4 // private修饰的属性:只能在本类内部访问,分类和外部都不能访问 5 private var age:Str

c++构造函数的作用---13

原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/ 一. 构造函数是干什么的 class Counter { public: // 类Counter的构造函数 // 特点:以类名作为函数名,无返回类型 Counter() { m_value = 0; } private: // 数据成员 int m_value; } 该类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数->由构造函数完成成员的初始化工作 eg:    Counter c1;

C#中构造函数的作用

C#中构造函数的作用 共同点: 都是实例化对象,初始化数据的 默认构造是说所有的类都从祖先object那继承了空参的构造方法,你不写与写空参构造都存在,而有参数的构造一般是自己写的,写就有不写就没有,它的作用和空参的一样,只是它里面可以有参数,给你个例子来说明吧 有一个类Monitor它有属性String height;String width public Monitor(){} public Monitor(String height,String width){} 有一个空参的一个有参的构

【C++ Primer 第七章】 默认构造函数的作用

默认构造函数的作用 1.  默认构造函数 C++ 默认构造函数是对类中的参数提供默认值的构造函数,一般情况下,是一个没有参数值的空函数,也可以提供一些的默认值的构造函数,如果用户没有定义构造函数,那么编译器会给类提供一个默认的构造函数,但是只要用户自定义了任意一个构造函数,那么编译器就不会提供默认的构造函数,这种情况下,容易编译报错,所以正确的写法就是用户在定义构造函数的时候,也需要添加一个默认的构造函数,这样就不会造成编译报错. 如:用户自定义的默认构造函数 class Test { publ

Java中构造函数的作用(转)

https://blog.csdn.net/vipmao/article/details/51530954,我觉得讲的非常好,学习到了 构造函数的最大作用就是创建对象时完成初始化,当我们在new一个对象并传入参数的时候,会自动调用构造函数并完成参数的初始化.如下: public class Test { private String name; //有参数的构造函数 public Test(String name) { this.name = name; } public static void

默认构造函数的作用

// 首先定义一个No_default类. class  No_default { public: No_default (const string&);  // 声明了一个构造函数,但是却没有默认构造函数! private: int a; string b; }; // 定义第二个类,其中有一个No_default类型的成员. class  B { public: No_default   my_mem;   // 类B也没有构造函数! }; B  b;                    

WinForm构造函数的作用

最近练习C#项目:何问起收藏夹(HoverTreeSCJ),实现编辑网址时,遇到这个问题:比如打开窗口后,要自动显示数据.解决方法:那么可以通过窗体的构造函数传递参数. 比如窗体类: public partial class Form_Edit : Form { //构造函数 public Form_Edit(int id) { SetUrlId(id); } public void SetUrlId(int id) { //这里根据参数读取加载数据 /* by 何问起 */ } } 那么新建窗

java中私有构造函数的作用

1. 强调类的单例模式 public class Elvs { //公有的静态域,来说明该类只能有一个实例(实例化一次后,后面都是同一个实例) public static final Elvs INSTANCE=new Elvs(); private Elvs(){}//将构造函数定义为私有变量后,就不能在外部去调用构造函数实例化类了 public void sys() { System.out.println("******"); } } public class Main { pu

explicit 只对构造函数起作用,用来抑制隐式转换。

class A { private: int a; public: A(int x) :a(x){} void display(){ cout << a << endl; } void display()const{ cout << "ddd" << endl; } }; void f(A a)//因为下面数据是常量,不能用&:因为用const就不能使用display { a.display(); } int main() { A