记录下来,给新手看(应该有人用的到)。
私有构造函数初看起来没有什么作用,但是在.net中功能相当多。一般用在许多静态方法的类中,这些静态方法用作一个库,而不是对象。添加私有构造函数,将确保类不能在外部创建对象。
创建私有构造函数有两个原因,在使用公共构造函数时,不能使用类创建代码,一种情况是,如果不提供初始化参数,创建对象是没有意义的。
    第二个原因是创建某种对象设计模式,例如工厂模式,即类上的公共静态方法要调用私有构造函数,并把对象的一个实例返回到对象创建代码,还有单—模式,即构造函数只能调用一次。
一个小例子:

    class foo
    {
        private foo()
        { }

public foo(int intNum)
        {
        }
    }

如果在外部创建对象

        foo f = new foo();

就会报一个错误 1 “foo()”不可访问,因为它受保护级别限制 ,这种情况是我们认为,如果不初始化参数,创建对象就没有意义。
此时如果想创建对象,就需要。

        foo f = new foo(321);

应该知道,派生类都要调用基类的构造函数,所以,就决定了带有私有构造函数的类不能用作基类,因为他们的构造函数对派生类来说不可见。

转载于:https://www.cnblogs.com/luoboqingcai/archive/2006/04/28/387747.html

[再读书]私有构造函数相关推荐

  1. C#构造函数、私有构造函数、静态构造函数与构造函数执行顺序

    https://www.cnblogs.com/ArtofDesign/p/3603986.html 默认构造函数,如果没有为类指定任何构造函数,编译器会自动为类创建一个无参构造函数,用以初始化类的字 ...

  2. C++ 私有构造函数的作用

    C++ 私有构造函数的作用 分类: C/C++ 2012-05-08 16:07 1536人阅读 评论(1) 收藏 举报 c++classdeleteobjectvector编译器 很多情况下要求当前 ...

  3. Java性能优化(3):通过私有构造函数强化不可实例化的能力

    有时候你可能会编写出只包含静态方法和静态域的类,这样的类有一些很不好的名声,因为有些人在面向对象的语言中滥用这样的类来编写过程化的程序.尽管如此,它们也确实有它们特有的用处,我们可以利用这种类,把操作 ...

  4. Java私有构造函数不能阻止继承

    下面是一个调用已经私有化的单列的函数的列子. 这里用了静态内部类,关键就是静态内部类可以访问外部类的私有构造函数. 这种算是变种继承吧.前提是可以在原来的单列类里添加代码. class Single ...

  5. c# 静态构造函数与私有构造函数共存

    在使用静态构造函数的时候应该注意几点: 1.静态构造函数既没有访问修饰符,也没有参数.因为是.NET调用的,所以像public和private等修饰符就没有意义了. 2.是在创建第一个类实例或任何静态 ...

  6. java 构造函数 单例_Java中的私有构造函数和单例类 - Break易站

    Java 构造函数 Java中的私有构造函数和单例类 我们首先分析下面的问题: 我们可以有私人构造函数吗? 正如你可以很容易猜到的,就像我们可以为构造函数提供访问说明符一样.如果它是私人的,那么它只能 ...

  7. C++之保护和私有构造函数与析构函数

    2019独角兽企业重金招聘Python工程师标准>>> 一.构造函数 1.保护 构造函数定义为protected后,就意味着你不能在类的外部构造对象了,而只能在外部构造该类的子类的对 ...

  8. Java并发实战-私有构造函数捕获

    java并发编程实战P58 私有构造函数捕获:私有构造函数进行线程安全地对象复制转发:http://atbug.com/private-constructor-capture-idiom/ /** * ...

  9. java 反射 调用私有构造函数_使用反射调用私有方法

    1.创建一个被调用的类 /** * @version 1.0 * @Author F-llin * @Date 2020-12-04 13:53 */ public class Bean{ priva ...

最新文章

  1. 过去一周AI领域有哪些新鲜事?看这一篇就够了
  2. 云计算技术 — 云计算的商业模式与部署模式
  3. 将用户输入内容中的尖括号、引号等进行转义
  4. VC6在64位Win7下调试无法退出的问题(缺少TLLOC.DLL和DM.dll)
  5. “如何写好科技论文之我见”结束语-如何写好科技论文之我见(十)
  6. 这是一篇能让你升职加薪,赢娶白富美的文章
  7. ios 标签 html,ios 显示HTML标签文本
  8. 免去架构算法调优,如何让你的系统风驰电掣?|图说
  9. array_walk与array_map的区别
  10. C# winform 上传文件 (多种方案)
  11. POJ2940 HDU1489 UVA11054 Wine Trading in Gergovia【Ad Hoc】
  12. mac中安装使用podman,替换docker
  13. python time函数的功能_Python中Python时间模块的常用功能,Pythontime,函数
  14. Java课程设计-基于Swing的文本编辑器
  15. 领克车机2.0安装 app 方法,亲测有效
  16. 建立远程桌面需要在对方服务器上做设置吗,SFB 项目经验-23-要远程登录,你需要具有通过远程桌面服务进行登录的权限...
  17. python自然语言分析--倚天屠龙记人物关系、词云、柱状图、-词频
  18. 怎么在线制作手机海报图片?
  19. 数据挖掘之房价预测任务
  20. wireshark 抓包使用教程

热门文章

  1. ios snapkit m_如何使用自动布局和SnapKit在iOS上创建漂亮的拉伸布局
  2. c# 数据可视化_#OpenVisConf上的22位数据可视化从业者的10点收获
  3. 如何通过中序和层序序列建立二叉树
  4. 计算机网络中的协议数据单元的控制信息主要包括哪些内容
  5. sudo配置文件详解及实战
  6. 「深度」线下大数据正成为构建精准“用户画像”的最大助力
  7. 专有云到混合云,是云计算的下半场?
  8. 谈谈Boost网络编程(2)—— 新系统的设计
  9. 干货:Android 源码使用心得分享
  10. session 与 cookie的区别