c#-关于私有构造函数的疑惑

问题描述

关于私有构造函数的疑惑

实例类可以将构造方法设置为私有,这个时候不允许类直接实例化,小弟有些不明白,这样做有什么特别的意思?或是说特别用途?那种情况下这样做,比较好?请大神帮忙解惑,谢谢

解决方案

一般是用来设计单例模式,就整个工程只有一个实例对象

解决方案二:

可以被自己的静态函数创建。

解决方案三:

就是不能直接构造对象,而需要特定public的函数来生成对象。类似工厂模式

解决方案四:

我记得单例模式里面就是私有构造方法,等,一般设计模式居多,为了安全性吧这样用

解决方案五:

有些时候某些类不适宜在外部实例化,请参考设计模式-单例模式的实现。

时间: 2024-11-05 14:54:02

c#-关于私有构造函数的疑惑的相关文章

ASP.NET私有构造函数用法分析_实用技巧

本文实例分析了ASP.NET私有构造函数用法.分享给大家供大家参考.具体分析如下: 一.私有构造函数的特性  1.一般构造函数不是私有或者保护成员,但构造函数可以使私有成员函数,在一些特殊的场合,会把构造函数定义为私有或者保护成员. 2.私有构造函数是一种特殊的实例构造函数.它通常用在只包含静态成员的类中.如果类具有一个或多个私有构造函数而没有公共构造函数,则不允许其他类(除了嵌套类)创建该类的实例. 3.私有构造函数的特性也可以用于管理对象的创建.虽然私有构造函数不允许外部方法实例化这个类,但

Java中反射获取私有构造函数、属性、方法

在学习Spring框架基础 Bean包时,写了一个简单的例子,类似如下: package study.spring.bean; public class SimpleBean { private String beanName; private SimpleBean() { System.out.println( " SimpleBean " ); } /** */ /** * @return Returns the beanName. */ public String getBean

Flash AS学习:构造函数小结

函数 一.构造函数的差别性 构造函数是一个特殊的成员函数,与成员函数具有共同性和差别性.例如:构造函数与成员函数一样,通过function关键字来定义,可以声明为private或public,可以在构造函数中加入参数等. 一.构造函数的差别性主要体现在: l    构造函数名与类名必须相同,并且区分大小写: l    构造函数不能声明为static,它只能是private或public: l    构造函数中不能使用return语句返回一个值: l    构造函数不能返回指定的数据类型: 当违反

Effective Java (4) 通过私有构造器强化不可实例化的能力

一.背景 对于有些工具类如java.lang.Math.java.util.Arrays等,它们只包含静态方法和静态域字段,对于这样的类实例化没有什么任何意义.但在实际使用中,如果不加任何特殊处理,这样的类还是可以像其他类一样可以被实例化. 二.处理办法 将构造函数设置为private,这样外部类无法实例化该类,同时在这个私有的构造函数中直接抛出异常,从而避免在类的内部实例化. public class UtilityClass { // 私有的构造器,内部实例化会抛出异常 private Ut

Effective Java(3) 用私有构造器或者枚举类型强化Singleton属性

一.背景 所谓的Singleton是指仅仅被实例化一次的类,Singleton通常被用来代表那些本质上唯一的系统组件. 实现Singleton有以下三种方法: ①. 私有构造器,公有静态final域. ②. 私有构造器,公有静态工厂方法. ③. 单元素枚举类型(首选). 二.私有构造器,公有静态final域 public class Singleton1 { public static final Singleton1 INSTANCE = new Singleton1(); // 公有静态fi

详解C++中如何将构造函数或析构函数的访问权限定为private_C 语言

今天面试被问到了这个单例模式常用到的技术手段,下面进行分析:         很多情况下要求当前的程序中只有一个object.例如一个程序只有一个和数据库的连接,只有一个鼠标的object.通常我们都将构造函数的声明置于public区段,假如我们将其放入private区段中会发生什么样的后果?这意味着什么?         当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也就是说它不属于class对象本身的调用,假如构造函数是私有的,由于在class外

继承的构造函数

一.继承的构造函数 在C++11新标准中,派生类能够重用其直接基类的构造函数.尽管如我们所知,这些构造函数并非以常规的方式继承而来,但是为了方便,我们不妨姑且称其为"继承"的.一个类只初始化它的直接基类,出于同样的原因,一个类也只继承其直接基类的构造函数.类不能继承默认.拷贝和移动构造函数.如果派生类没有直接定义这些构造函数,则编译器将为派生类合成它们. 派生类继承基类构造函数的方式是提供一条注明了(直接)基类名称的using声明语句.举个例子,我们定义Bulk_quote类,如下:

C#设计模式(1)——单例模式

原文:C#设计模式(1)--单例模式 一.引言 最近在设计模式的一些内容,主要的参考书籍是<Head First 设计模式>,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了帮助我更深入地理解设计模式,二同时可以给一些初学设计模式的朋友一些参考.首先我介绍的是设计模式中比较简单的一个模式--单例模式(因为这里只牵涉到一个类) 二.单例模式的介绍 说到单例模式,大家第一反应应该就是--什么是单例模式?,从"单例"字面意思上理

Java必知小Tips

Tips 1: Java里面Override返回值是否必须和父类相同 1234567891011121314151617181920212223242526272829 class Base { public Base newInstance() { return new Base(); } public Base newInstance2() { return new Base(); } public Number hello() { return 0; }}class Test extend