黑马程序员技术交流社区

标题: 关于构造方法私有化 [打印本页]

作者: true    时间: 2014-6-1 14:41
标题: 关于构造方法私有化
构造方法私有化以后,怎么用其它类来调用这个构造方法呢?求大神指点迷津。新人求指教
作者: 朱晓盼    时间: 2014-6-1 15:18
构造方法被private修饰符修饰后,这个构造方法可以被使用的范围就只能是在本类中被使用了,如果非要被类使用的话,那就只有内部类了。
学到后期的反射,可以直接获取这个私有的构造方法
作者: fenzheng    时间: 2014-6-1 15:25
构造方法私有化????你指的是单利设计模式吧,单利设计模式,里面构造方法私有化,值的事无参数的额构造方法,这个构造方法私有化以后,其他类就没办法创建对象了,因为,只要是创建该类的对象,都必须要调用它无参数的额构造方法,而这个方法被你给私有化了,所以其他类是没办法创建对象的,但是,私有化构造方法,你本类依然可以方法,然后你就在本类创建一个唯一的对象给它们调用,这就是单利设计模式了,
第二个:如果你没有私有化无参数的额构造方法,其他类依然可以创建对象,你私有其他的有参数的构造方法,意义不大
作者: 执笔梦    时间: 2014-6-1 15:31
本帖最后由 执笔梦 于 2014-6-1 15:34 编辑

一般来说,你将构造方法私有了,就是不想别类创建本类对象。
如果你这个类工具类的话,类一般也是final 的了,因为不是为继承而产生的,那方法一般也是static的了,直接用类名调用。

当然你也可以用单例设计模式,提供一个static方法让别人获取本类唯一对象

/*
在这没有考虑线程安全问题
*/
如: final class JDBCUtlis{
    private static JDBCUtils  ju = new JDBCUtils();  


   private JDBCUtils(){
     }


    public statoc JDBCUtils getInstance(){
                return ju;
   }
}



作者: 淡淡柠檬茶    时间: 2014-6-1 15:48
哥们,你的问题我回答的可能不对,但还是多说一句吧,其实“构造方法私有化以后,怎么用其它类来调用这个构造方法”最直接的例子就是视频中单例设计模式(懒汉式、饿汉式),同时在java基础内容中“第9天中异常练习(老师用电脑上课)”、“第10天的求圆和长方形面积”等例子都涉及到你所说的应用。同时还可以扩展知识熟悉掌握异常。菜鸟提示,见谅。
作者: 成小龙    时间: 2014-6-1 16:41
反射应该可以得到构造函数的字节码,利用自身方法,就应该可以创建对象了
作者: chenzhiyuan    时间: 2014-6-1 18:48
本帖最后由 chenzhiyuan 于 2014-6-1 18:54 编辑

私有的这个类中,定义一个获取对象实例的方法,方法是public static 返回值是类类型的方法,里面new一个本类的对象并且return返回出去,
在其他类中调用这个方法,自然就会返回一个实例对象给你,这个过程中他会调用它的私有构造方法去初始化,不知道楼上是不是说的这样的,
只要能调用它,还是说由谁调用,或者说他是怎么调用私有构造方法的,

作者: Lex    时间: 2014-6-1 19:09
好像只能通过其他函数,来return访问
作者: a6511631    时间: 2014-6-24 09:41
fenzheng 发表于 2014-6-1 15:25
构造方法私有化????你指的是单利设计模式吧,单利设计模式,里面构造方法私有化,值的事无参数的额构造方法,这 ...

不知道是不是错别字,看得一头雾水
作者: niushicha    时间: 2014-7-27 12:56
我好像没见过这么用,所以我不能给你解释的清楚!
作者: GYSWL    时间: 2014-8-22 23:45
同问 来学习了
作者: lby369    时间: 2014-12-23 21:32
这种问题一般只有在特殊情况下才会产生,正常情况一般是不会这样做的。
作者: 王者之风西昆仑    时间: 2015-1-6 11:52
执笔梦 发表于 2014-6-1 15:31
一般来说,你将构造方法私有了,就是不想别类创建本类对象。
如果你这个类工具类的话,类一般也是final 的 ...

原来是这样,受教了
作者: pj1988    时间: 2015-1-15 11:18
还没将构造方法私有过,不知道上面情况
作者: 灵韵依存    时间: 2015-11-23 22:04
我觉得是不能调用了
作者: icm    时间: 2015-12-15 20:59
以我目前的知识,我只知道单例模式中用到了私有化构造方法,然后再类中在创建一个私有的引用指向这个单例对象。然后提供一个静态的方法获取单例对象。
作者: icm    时间: 2015-12-15 21:02
以我目前的知识,我只知道单例模式中用到了私有化构造方法,然后再类中在创建一个私有的引用指向这个单例对象。然后提供一个静态的方法获取单例对象。
作者: icm    时间: 2015-12-15 21:04
以我目前的知识,我只知道单例模式中用到了私有化构造方法,然后再类中在创建一个私有的引用指向这个单例对象。然后提供一个静态的方法获取单例对象。
作者: fanhongwei1105    时间: 2016-5-24 22:09
一般来说,你将构造方法私有了,就是不想别类创建本类对象。 如果你这个类工具类的话,类一般也是final 的了,因为不是为继承而产生的,那方法一般也是static的了,直接用类名调用。  当然你也可以用单例设计模式,提供一个static方法让别人获取本类唯一对象
作者: innovator    时间: 2016-6-2 08:28
看了很多大神的回复,虽然没有完全搞明白,不过也学到了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2