`
guitar427
  • 浏览: 4728 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

第4条--通过私有构造器强化不可实例化的能力

 
阅读更多

 

这条内容很少,不过还是简单记录一下吧
有时候,我们会设计一些类,它们只提供静态方法和静态域,这些类被实例化是完全无意义的。这时候提供一个私有构造器来保证它不能够被实例化是非常严谨的做法,事实上,Java提供的java.lang.Math、java.util.Arrays包括第一条中提到的java.util.Collection等工具类都实现了一个私有的构造器,这个私有的构造器的原理我想就没必要说了吧。
这种做法带来的一个副作用是这种类不能被继承。不过这实在是无关紧要的,谁会去继承工具类呢。。

分享到:
评论
2 楼 guitar427 2013-05-07  
哈哈
1 楼 iamhere2012 2013-05-06  
确实没什么可写的东西

相关推荐

    Effective-Java读书笔记(上)

    **通过私有构造器强化不可实例化的类**: - **工具类**:通常,工具类应包含私有构造器以防止被实例化。 - **副作用**:使用私有构造器的一个副作用是使得该类不能被继承。 **避免创建不必要的对象**: 1. **不可...

    effective-java.pdf

    - 不可实例化:当类设计为工具类,不希望有实例存在时,可以使用私有构造器来防止外部实例化。 - 不可变值类:使用预先构建的实例或构造时缓存实例,确保不会创建重复对象。 4. 基于接口的框架:通过接口提供静态...

    Effective Java第三版1

    4. **强化不可实例化的能力**:对于工具类或只包含静态方法的类,通过使构造器私有,可以防止其被实例化。 5. **依赖注入**:优于硬编码资源连接,依赖注入可以提高代码的可测试性和灵活性。 6. **避免创建不必要的...

    Java中对象的生命周期 ..doc

    4. **私有构造函数**: - 私有构造函数只能在当前类内部使用。 - 通常用于单例模式或当类不希望被实例化时使用。 #### 四、对象的销毁 1. **对象生命周期的结束**: - 当没有任何引用指向该对象时,即对象成为...

    JAVA基础知识精华总结

    - 构造方法内只能调用一次其他构造器,且必须作为第一条语句。 5. **访问控制修饰符** - 无public修饰的类只有在特定条件下可被访问,如在同一文件、同一目录或同一包。 - protected修饰的成员只允许子类和同一...

    \Java第四十一——四十二讲总结-设计模式.doc

    - **不可继承**:通常单例类的构造器是私有的,因此不能被继承。 ##### 实现方式 单例模式的实现主要有三种方式: 1. **懒汉式(延迟实例化)** - **概念**:在需要的时候才创建实例。 - **代码示例**: ```...

    JAVA基础第章继承与多态练习题.docx

    - 私有类 `Base` 的实例化会在 `Pri` 类的实例化过程中进行,但由于 `Base` 中的 `i` 是局部变量,它的输出只会在 `Base` 构造器内部显示。而 `Pri` 类的静态变量 `i` 在类加载时初始化,所以输出只有 `200`,答案...

    小码哥-任小龙Java笔记-面向对象的全部笔记

    - 实现方式:使用私有构造器和静态工厂方法或枚举。 **15. 包装类型的操作** - 对于基本类型的包装类型,比较时应使用`equals()`而不是`==`。 - 示例:`Integer a = 1; Integer b = 1; System.out.println(a....

    JAVA基础第4章继承与多态-练习题 (2).pdf

    4. 子类构造器在初始化时会默认调用超类的无参构造器,除非显式地使用`super()`调用其他构造器。在构造器的第一条语句中调用超类构造器是正确的做法,因此第8题答案是B。 5. 静态上下文(如静态方法)中不能使用`...

    VC++实例.pdf

    - **静态控件:** 用于显示不可编辑的文本或图标。 **6.5 文本编辑控件** - **编辑控件:** 允许用户输入文本。 **6.6 列表框控件** - **列表框:** 显示列表供用户选择。 **6.7 组合框** - **组合框:** 结合...

    java高级编程第四章实用类

    这些类通常被设计为不可实例化,以防止不必要的对象创建,提高性能。下面将详细讨论实用类的基本特点、常见类型以及如何在实际开发中应用它们。 1. **实用类的特点** - **无实例变量**:实用类通常不包含任何实例...

    JAVA编程基础-06面向对象高级特性-zhouxl.pdf

    `super()`必须是子类构造器中的第一条语句。 #### super和this关键字 - **super**:用于调用父类的方法或构造器,或者访问父类的属性。 - **this**:用于调用当前类的其他构造器或方法,或访问当前类的属性。 ###...

    重庆信息技术职业学院(《JAVA程序设计》理论考试第一套试题答案).pdf

    - **第4题** 展示了类A的定义,包含了无参构造器、带一个参数的构造器和带两个参数的构造器,体现了构造器的重载。 5. **编程题**:这部分考察了实际编程技能,如控制流、条件判断、方法调用等。 - **第1题** 是...

    j2ee(1)asdfasdf

    - `java.lang.Double`:不可实例化(F),`Double` 是一个包装类,用于包装 `double` 基本类型,但其构造器是私有的,不能直接创建实例。 - `java.lang.Math`:不可实例化(F),该类包含数学函数,为静态方法提供...

    Java面向对象的3大特征之继承

    - 在构造器中,子类必须通过`super`调用父类的构造器来初始化父类的状态,且`super`必须位于构造器的第一行。 - 如果父类有参构造器,需显式调用`super(参数列表)`。 4. 访问权限修饰符: - `private`:仅在当前...

    Java经典面试题+答案(带书签)pdf

    - 子类实例化时首先调用父类构造方法,然后初始化子类成员变量。 #### 四、异常 **1. Throw和throws的区别** - `throw`:用于抛出异常。 - `throws`:用于声明方法可能抛出的异常。 **2. Final,finally和...

Global site tag (gtag.js) - Google Analytics