第四条 私有构造强化不可实例化

原创 2016年05月31日 18:06:28

有时候,我们项目中会编写一些静态方法,这些类的名称不太好,但却有自己独特的用处。例如 Math Arrays Collections 等java jdk中封装的工具类等。

像Math 为了防止被扩展,在类的前面加上了 final 关键字。

这些类不希望被实例化,因为实例化了没有意义,但在缺少显示构造器的情况下,编译器会自动提供一个默认的无参构造,这样就可以被实例化了。为了解决这一问题,需要我们做些什么。

 是否可以做成抽象类呢?抽象类不能被实例化,但有个问题,抽象类可以被子类化,并且子类可以被实例化,并且会误导用户,让用户以为这个类就是 为了继承而设计的。

因此,我们有个简单的方法,就是初始化一个私有的无参构造器,这样就不能被实例化了,只能直接用类调用静态方法。


class Unit{

       private Unit(){}

public static intmean(int a ,int b){

return a*b   

 }

}


这样做有个坏处就是不能被继承,自能自己玩自己的。总得来说,编写静态方法类时,最好做成不可被实例化。

Java性能优化(2):使用私有构造函数强化singleton属性

singleton是指这样的类,它只能实例化一次。singleton通常被用来代表那些本质上具有唯一性的系统组件,比如视频显示或者文件系统。...
  • pangjiuzala
  • pangjiuzala
  • 2015年08月20日 09:13
  • 1215

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

只包含静态方法和静态域的类名声很不好,因为有些人用他们来用面向对象的语言来实现面向过程的程序,尽管...
  • u014723123
  • u014723123
  • 2014年06月20日 20:45
  • 572

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

本文是 《Effective Java Second Edition》第4条的读书笔记,文中如有错误或表述不当,非常欢迎能批评指正,本人不胜感激!在绝大多数的项目中,我们都会用到一些工具类来供我们调用...
  • zjq_1314520
  • zjq_1314520
  • 2017年11月01日 20:42
  • 473

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

第4条:通过私有构造器强化不可实例化的能力    有时候可能只需要编写包含静态方法和静态域的类。这些类的名声很不好,因为有些人再面向对象的语言中滥用这些类来编写过程化的程序。尽管如此,他们也确实有他们...
  • Jing_Unique_Da
  • Jing_Unique_Da
  • 2015年11月10日 12:12
  • 679

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

对只有静态方法和域的类,主要用于把基本类型的值或数据类型上的相关方法组织起来(Math,Arrays),可以通过Collections的方法把实现特定接口的对象上的惊天方法组织起来,可以利用这种类把f...
  • u012516166
  • u012516166
  • 2017年11月02日 10:21
  • 73

第4条:通过私有构造函数强化不可实例化的能力

偶尔情况下,你可能会编写出只包含静态方法和静态域的类。这样的类有一些很不好的名声,因为有些人在面向对象的语言中滥用这样的类来编写过程化的程序。尽管如此,它们确实有它们特有的用处,我们可以利用这种类,把...
  • itzyjr
  • itzyjr
  • 2014年03月29日 16:57
  • 943

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

场景: 在创建工具类的时候,大部分是无需实例化的,实例化对它们没有意义。在这种情况下,创建的类,要确保它是不可以实例化的。 存在问题: 在创建不可实例化的类时,虽然没有定义构造器。但是,客户端...
  • qq_24835809
  • qq_24835809
  • 2017年12月18日 20:15
  • 27

面向对象基础——构造方法私有化、对象数组、内部类

构造方法私有化  类的封装性不光体现在对属性的封装上,实际上方法也是可以被封装的,当然,在方法封装上也包含了对构造方法的封装。例如如下代码就是对构造方法封装。 class Singleton{ ...
  • u013087513
  • u013087513
  • 2016年03月30日 21:53
  • 1265

第3条:用私有构造器或者枚举类型强化Singleton属性

术语: Singleton:指仅仅被实例化一次的类。
  • u014723123
  • u014723123
  • 2014年06月20日 20:27
  • 656

抵御反射机制调用单例类私有构造器

Java 单例模式一般有两种实现:     1.暴露静态final字段 Java代码  public class Elvis {          public st...
  • czjuttsw
  • czjuttsw
  • 2013年01月17日 19:24
  • 2628
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第四条 私有构造强化不可实例化
举报原因:
原因补充:

(最多只允许输入30个字)