黑马程序员技术交流社区

标题: 当构造方法被private修饰时,怎么还能对这个类创建对象. [打印本页]

作者: Morrfree    时间: 2015-8-5 22:18
标题: 当构造方法被private修饰时,怎么还能对这个类创建对象.
如题,大家踊跃发言啊,有好多不懂的啊...
作者: hufan小步调    时间: 2015-8-5 22:26
Morrfree 发表于 2015-8-5 22:18
如题,大家踊跃发言啊,有好多不懂的啊...

私有化构造方法,外界就无法初始化,无法实例化对象,只有本类可以创建对象,如果将对象成员再私有化,提供公共访问方式,这样就构成了单例模式,例如月亮类就只有一个月亮对象。
作者: 何琼飞    时间: 2015-8-5 22:29
hufan小步调 发表于 2015-8-5 22:26
私有化构造方法,外界就无法初始化,无法实例化对象,只有本类可以创建对象,如果将对象成员再私有化,提 ...

这个外界是什么?
作者: halohoop    时间: 2015-8-5 22:38
其实外界还是可以拿到实例的。
  1. import java.lang.reflect.*;
  2. class Test
  3. {
  4.         public static void main(String[] args) throws Exception
  5.         {
  6.                 Class cls = Class.forName("Demo");
  7.                 Constructor constructor = cls.getDeclaredConstructor();
  8.                 constructor.setAccessible(true);
  9.                 Demo demo =(Demo)constructor.newInstance();
  10.                 System.out.println(demo.a);
  11.         }
  12. }
  13. class Demo//构造方法被私有化的类
  14. {
  15.         public String a = "wo ca lie!";
  16.         private Demo(){}
  17. }
复制代码

作者: hufan小步调    时间: 2015-8-5 22:48
halohoop 发表于 2015-8-5 22:38
其实外界还是可以拿到实例的。

这是到了反射的内容?还没学
作者: Morrfree    时间: 2015-8-6 23:04
hufan小步调 发表于 2015-8-5 22:26
私有化构造方法,外界就无法初始化,无法实例化对象,只有本类可以创建对象,如果将对象成员再私有化,提 ...

恩,虽然还没讲到单例设计模式,但是会下去研究下的.
作者: Morrfree    时间: 2015-8-6 23:05
何琼飞 发表于 2015-8-5 22:29
这个外界是什么?

指的是子类.
作者: Morrfree    时间: 2015-8-6 23:07
halohoop 发表于 2015-8-5 22:38
其实外界还是可以拿到实例的。

恩恩   ,我今天网上又查了下,是可以在那个构造方法被私有的类中对外暴露一个方法,从而使子类创建对象的.




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