私有构造器怎么在Java中使用

  介绍

私有构造器怎么在Java中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

构造器作为Java类的一个特殊的成员同样可以设置关键字来控制其访问权限。在大多数情况下,我们一般把构造器设置为公有成员,即公共的,在默认情况下,如果不写任何关键字,其访问权限也是公众。这样,在我们新建一个类的对象的时候,构造器会创建对象后被自动调用,发生在其他类成员被设置为默认初始值之后,当然如果有字段初始器和初始化块的话,构造器的调用会发生在此之后。构造器的主要作用是在新将对象的引用返回之前初始化对象。

言归正传,什么叫私有构造器。所谓私有构造器,就是用私人关键字声明的构造器,即使用私人关键字声明的构造函数…与一般公有构造器最大的区别在于,其访问权限是私人的,于是它只能被包含它的类自身所访问,而无法在类的外部调用,故而可以阻止对象的生成,所以,如果一个类只有一个私有构造器,而没有任何公有构造器,是无法生成任何对象的。

由于类的构造函数时私有的,所以此类不能被实例化,同时也不能被继承。《有效的Java》第三条:用私有构造器或者枚举强化单属性。所谓单属性是指仅仅被实例化一次的类。第四条:通过私有构造器强化不可实例化的能力。在Java中实现单有两种方式:

公共类猫王{
  公共静态最终=new猫王埃尔维斯实例();
  私人埃尔维斯(){}
  }
公共类猫王{
  私有静态最终=new猫王埃尔维斯实例();
  私人埃尔维斯(){}
  公共静态猫王getInstance(){返回实例;}
  }

方法一:私有构造函数只能被调用一次,用来实例化公有的静态最终域Elvis.INSTANCE,一旦猫王被实例化,只会存在一个猫王实例(享有特权的客户端可以借助AccessibleObject.setAccessible方法通过反射机制调用私有构造器),

方法二:使用静态方法getInstance返回对同一个对象的引用,永远不会创建其他Evlis实例。

为什么需要私有构造器,如果类不能被实例化该怎么使用这个类的方法?

私有构造器的存在可以让某些类不能被实例化和子类化,这些类通常是一些工具类,例如java.lang.Math等,访问这些类的方法我们可以定义公有的静态方法来实现,如A.methon ()

公共类{
  私人(){}
  公共静态孔隙methon () {}
  }

java.lang.Math中私有构造器的使用,可以看到数学类被定义为最终的使用了私人的构造函数,它的方法都是静态的,所以调用其方法只需要sin (x)即可:

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

私有构造器怎么在Java中使用