我是新人 问大家一个java问题
就是那个构造方法在实例化的时候就开始运行了,如果这个构造方法是private型的那咋办呢 是否不影响他的运行?谢谢了 纠结啊 --------------------编程问答-------------------- 你把它改成private 看看能不能编译通过 --------------------编程问答-------------------- http://topic.csdn.net/t/20040111/03/2653415.html --------------------编程问答-------------------- 一般只有单例模式才把他设成为private,确保外部不能实例化,这样才能保证他是一个实例 --------------------编程问答-------------------- 没关系,假如你的构造方法是private A(){}
你在类中再添加一个静态方法(这里假定是无参数的,有参数的也可以类似写,只需括号中加参数)
public static A createA(){ return new A();}
或者:
public static A getInstance(){ return new A(); }
然后其他类就可以放心调用了 A.createA(); 或者 A.getInstance(); --------------------编程问答--------------------
如果不是单例,这样写有什么意义? --------------------编程问答--------------------
你用过Calendar.getInstance()方法吗? 你认为它的里面怎么实现呢? --------------------编程问答--------------------
如果把它换成公有构造函数,会有什么不同之处吗? --------------------编程问答--------------------
你不觉得写这么多new很别扭吗???,
按照HeadFirst的话说,
首先说明,写成new对程序运行没有问题 本身是没有问题
但是那是面向实现的编程习惯
而我们提倡使用面向接口的编程风格
我刚才在API1.6中搜索getInstance()方法,显示出来的条目不下50条
搜索createXXX()方法,显示出来的条目不下数不尽数
我才猜想 sun是希望我们少用new
--------------------编程问答-------------------- 上面没有说完整,
HeadFirst 设计模式:第11页
设计原则:
针对接口编程,而不是针对实现编程
--------------------编程问答--------------------
他的getInstance和createXXX恐怕是结合设计模式所说
在Calendar这个类中,我不觉得getInstance和构造函数有任何功能上的不同
--------------------编程问答-------------------- 用private来修饰构造方法一般只用于单例模式.
但说实话,我真没觉得这个单例模式有啥好的,功能上来说一点好处都没有,仅仅只是为了所谓的编程思想.
真扯. --------------------编程问答-------------------- 好处还是有的,不知道你用过vs做播放器没有,里面要是不用单例模式来做的话更本就很难到达我们想做的那样的效果,弹出来的窗体就一直会出来。 --------------------编程问答--------------------
我来回答楼主的问题,其他不做任何表态。
没什么纠结的,构造方法在实例化的时候开始运行,对!
构造方法是private的,如果在某些区域你能实例化它,那么它在实例化的时候也会运行;
如果你不能实例化它,它也就不能运行,何谈影响,回答完毕,不知道楼主疑惑解开没有! --------------------编程问答--------------------
单例 单例 就是内存中仅有它1个
如果要在程序中不使用单例实现这一点
要么该对象初始化以后做各种参数到处传
要么把对象的类全部写成静态的
对于第一种,不解释
对于第二种,当有时候你发现你这个类的某些方法依赖与某些状态,你就不得不用单例了 --------------------编程问答-------------------- --------------------编程问答--------------------
顶下 --------------------编程问答-------------------- 按照4楼的写法就可以解决你的问题
--------------------编程问答-------------------- 按照4楼的写法就可以解决你的问题
补充:Java , Java SE