A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© true 中级黑马   /  2014-6-1 14:41  /  6546 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

构造方法私有化以后,怎么用其它类来调用这个构造方法呢?求大神指点迷津。新人求指教

评分

参与人数 2技术分 +1 黑马币 +5 收起 理由
苍穹的雨 + 5 神马都是浮云
李小然 + 1

查看全部评分

19 个回复

倒序浏览
构造方法被private修饰符修饰后,这个构造方法可以被使用的范围就只能是在本类中被使用了,如果非要被类使用的话,那就只有内部类了。
学到后期的反射,可以直接获取这个私有的构造方法

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
构造方法私有化????你指的是单利设计模式吧,单利设计模式,里面构造方法私有化,值的事无参数的额构造方法,这个构造方法私有化以后,其他类就没办法创建对象了,因为,只要是创建该类的对象,都必须要调用它无参数的额构造方法,而这个方法被你给私有化了,所以其他类是没办法创建对象的,但是,私有化构造方法,你本类依然可以方法,然后你就在本类创建一个唯一的对象给它们调用,这就是单利设计模式了,
第二个:如果你没有私有化无参数的额构造方法,其他类依然可以创建对象,你私有其他的有参数的构造方法,意义不大
回复 使用道具 举报
本帖最后由 执笔梦 于 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;
   }
}


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

私有的这个类中,定义一个获取对象实例的方法,方法是public static 返回值是类类型的方法,里面new一个本类的对象并且return返回出去,
在其他类中调用这个方法,自然就会返回一个实例对象给你,这个过程中他会调用它的私有构造方法去初始化,不知道楼上是不是说的这样的,
只要能调用它,还是说由谁调用,或者说他是怎么调用私有构造方法的,
回复 使用道具 举报
Lex 中级黑马 2014-6-1 19:09:19
8#
好像只能通过其他函数,来return访问
回复 使用道具 举报
fenzheng 发表于 2014-6-1 15:25
构造方法私有化????你指的是单利设计模式吧,单利设计模式,里面构造方法私有化,值的事无参数的额构造方法,这 ...

不知道是不是错别字,看得一头雾水
回复 使用道具 举报
我好像没见过这么用,所以我不能给你解释的清楚!
回复 使用道具 举报
GYSWL 中级黑马 2014-8-22 23:45:43
11#
同问 来学习了
回复 使用道具 举报
lby369 中级黑马 2014-12-23 21:32:36
12#
这种问题一般只有在特殊情况下才会产生,正常情况一般是不会这样做的。
回复 使用道具 举报
执笔梦 发表于 2014-6-1 15:31
一般来说,你将构造方法私有了,就是不想别类创建本类对象。
如果你这个类工具类的话,类一般也是final 的 ...

原来是这样,受教了
回复 使用道具 举报
还没将构造方法私有过,不知道上面情况
回复 使用道具 举报
我觉得是不能调用了
回复 使用道具 举报
icm 中级黑马 2015-12-15 20:59:15
16#
以我目前的知识,我只知道单例模式中用到了私有化构造方法,然后再类中在创建一个私有的引用指向这个单例对象。然后提供一个静态的方法获取单例对象。
回复 使用道具 举报
icm 中级黑马 2015-12-15 21:02:34
17#
以我目前的知识,我只知道单例模式中用到了私有化构造方法,然后再类中在创建一个私有的引用指向这个单例对象。然后提供一个静态的方法获取单例对象。
回复 使用道具 举报
icm 中级黑马 2015-12-15 21:04:44
18#
以我目前的知识,我只知道单例模式中用到了私有化构造方法,然后再类中在创建一个私有的引用指向这个单例对象。然后提供一个静态的方法获取单例对象。
回复 使用道具 举报
一般来说,你将构造方法私有了,就是不想别类创建本类对象。 如果你这个类工具类的话,类一般也是final 的了,因为不是为继承而产生的,那方法一般也是static的了,直接用类名调用。  当然你也可以用单例设计模式,提供一个static方法让别人获取本类唯一对象
回复 使用道具 举报
看了很多大神的回复,虽然没有完全搞明白,不过也学到了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马