构造方法的作用主要是初始化,如果一个类的构造被声明为私有的话,就意味着其他的类不能直接调用该类生成新的对象。要知道,父类的构造是不能被子类继承的。那么问题来了,如果一个类的构造被声明为private的话,子类就没有办法调用该构造产生一个父类对象,这简直是个悖论。因此,被声明为private的类根本就没有办法被继承。

  • 当然,构造方法也不是只能被public修饰。当用protected修饰构造方法,表示该类的不同包的子类,可以调用该构造方法产生父类对象。
  • 如果默认修饰符的话,表示该类可以被同包中的其它类调用产生对象。

然而,Java中依然有将构造方法声明为private的应用。因为这样的情况下,其他类不能直接调用该类生成新的对象,也就避免了同一个类被反复创建的情况,这种情况下,该类只有一个对象实例。

这种思想也就是单例模式的设计思想。在该种思想模式下,一个类只能是对应于一个对象,没有其他的类可以创建新的对象,这也就保证了单例模式下只有一个对象。私有构造方法已经广泛应用于jdk当中。下面用jdk中RunTime的源码展示一下:

<pre name="code"class="java">public class Runtime {

private static Runtime currentRuntime = newRuntime();

public static Runtime getRuntime() {

return currentRuntime;

}

// Don't let anyone else instantiate thisclass

private Runtime() {

}

}

为什么构造方法通常用public修饰?相关推荐

  1. 构造方法前可以用public修饰吗_程序员,你连反射都不会,还敢说自己会Java吗?...

    一.反射机制 1.1 框架 在学习Java的路上,相信你一定使用过各种各样的框架.所谓的框架就是一个半成品软件,已经对基础的代码进行了封装并提供相应的API.在框架的基础上进行软件开发,可以简化编码. ...

  2. java构造器(构造方法)用private和public修饰的区别

    用private和public修饰构造器的区别 示例代码: 分析: 用public修饰 用private修饰 总结: 示例代码: 在这里用private修饰无参数的构造器,用public修饰有参数的构 ...

  3. [转载] 面试题:说说Java中接口、类、成员变量、成员方法、构造方法有哪些访问修饰符和他们的作用范围

    参考链接: Java中的访问修饰符 * 问题:说说Java中接口.类.成员变量.成员方法.构造方法有哪些访问修饰符和他们的作用范围 * 答:接口的访问修饰符只有public 1个 *    类的访问修 ...

  4. C#中使用属性及get,set访问private字段和直接用public修饰字段的对比和理解

    导语 本篇仅作为初学C#的随笔,内容较基础,适合初级水平开发者,浅谈主题中的话题,从两者的相同点,不同点,和如何选三个角度探讨,希望文章能起到抛砖引玉的作用,欢迎补充和纠正. 如果你并不想花费十分钟左 ...

  5. 小鱼提问1 类中嵌套public修饰的枚举,外部访问的时候却只能Class.Enum这样访问,这是为何?...

    /// <summary>/// 常量等定义/// </summary>public class General{/// <summary>/// 文件类型/// ...

  6. LSM Tree 学习笔记——MemTable通常用 SkipList 来实现

    最近发现很多数据库都使用了 LSM Tree 的存储模型,包括 LevelDB,HBase,Google BigTable,Cassandra,InfluxDB 等.之前还没有留意这么设计的原因,最近 ...

  7. [vue] vue常用的修饰符有哪些?列举并说明

    [vue] vue常用的修饰符有哪些?列举并说明 .trim .number .stop .prevent 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起 ...

  8. 构造方法可以被private修饰么?

    构造方法可以被private修饰,如果当前类只有一个构造方法且被private修饰,那么其它类是无法创建当前类的对象并且当前类也是不能被继承的.

  9. 在计算机领域中通常用bips来描述,9月计算机一级MsOffice考试章节练习题

    2017年9月计算机一级考试将于9月23日-26日进行,为帮助考生们复习备考,以下是百分网小编搜索整理的一份9月计算机一级MsOffice考试章节练习题,供参考练习. 1[单选题] 下列设备组中,完全 ...

最新文章

  1. 计算1到N的十进制数中1的出现次数
  2. Link Cut Tree学习笔记
  3. DIY人脸跟踪电风扇送女朋友(2)
  4. 低代码开发是如何解决企业招聘技术人才难题?
  5. 几种如何判断环境是否连上网方法,推荐最后一种
  6. 温升测试总结setllom解胶剂
  7. oracle函数大全指数运算,Oracle 基础语句 函数大全(字符串函数,数学函数,日期函数,逻辑运算函数......
  8. linux-32bit-内存管理
  9. c语言分号应用,问什么C程序里总是提示缺少分号;,而明明有分号?
  10. yii2 AR打印sql语句
  11. IDEA安装MySQL版本以及驱动jar包下载问题
  12. 富士康年轻工人现状调查:厌倦并依赖着-转自鲜果网
  13. 学云计算能从事哪些岗位 未来职业发展是什么样
  14. 虚拟机之Jvm、dalvik、art联系和区别
  15. 深度学习之图像隐写去除(DDSP模型 Steganography Removal)
  16. python中怎么统计英文字符的个数_Python之每日一练统计英文文本单词出现的个数、行数、字符数...
  17. 《iPad开发从入门到精通》——6.6节系统设置
  18. 11B Cosmos 平台手写笔画显示比较滞后问题
  19. 操作系统(第三章)——思维导图总结
  20. UiPath中文教程

热门文章

  1. 将android转换成ios,王者荣耀苹果转安卓数据迁移 苹果转安卓教程2020
  2. Chukwa搭建、安装、部署、应用
  3. 把代码和环境做成docker镜像_新手指南:如何将应用打包成为 Docker 镜像?
  4. shell IF语句的使用
  5. GBASE 8s的onspaces工具
  6. Carthage Incompatible Swift version - framework was built with
  7. 工作之余加班加点开发的项目被MD5“夺走“
  8. 超微服务器主板u盘装系统,超微主板怎么设置u盘启动,小鱼教您超微主板怎么
  9. (六)速度梯度与加速度梯度
  10. 佟强——对外经济贸易大学信息学院