黑马程序员技术交流社区
标题:
private关键字
[打印本页]
作者:
李建锋
时间:
2012-2-16 23:12
标题:
private关键字
本帖最后由 李建锋 于 2012-2-17 15:20 编辑
为什么有的书说构造方法不可以使用private关键字,但是在单例设计模式中确实是使用了啊~!
作者:
丁晓宇
时间:
2012-2-16 23:17
我们创建对象的时候 最常见的也最简单就是去new一个他的实例
比如String str = new String();
这时候调用了他的public String();构造函数,如果这个构造函数是private String();那么就new不出来了
所谓单例模式就是说程序运行起来以后我只有一个对象实例,内存里只有一个对象不管是谁去调用都是调用它,那么就需要把构造函数私有化不然任何人去new,再提供一个公有的返回那个单一实例的对象的方法。这就是最基础的单例模式
作者:
丁晓宇
时间:
2012-2-16 23:19
构造方法用什么修饰主要看你的业务需求啦
作者:
彭嘉聪
时间:
2012-2-17 01:13
成员都可以用private修饰,但是构造方法修饰了就不能自己创建对象
一般这样就用于单例模式
就是说一般这个类只持有一个对象,这个对象通过get方法来获取;
作者:
熊玖帅
时间:
2012-2-17 08:46
把构造方法声明为private的理由:
1.这个类中仅仅包含供其他类调用的静态方法,没有实例方法,这意味着当某个类想要调用该类中的方法时,无需创建该类的实例,就不会触及到该类的构造方法。
2.禁止该类被继承
3.这个类需要把自身实现的细节封装起来,不允许其它程序通过new语句来创建这个类的实例。这个类向其他程序提供了获取自身实例的静态方法,这种方法称为静态工厂方法。
作者:
王康
时间:
2012-2-17 09:16
构造方法有4种修饰,public、protected、默认、private。public的构造方法你可以用 A a =new A(); 这样来创建对象 而protected、默认修饰的构造方法你只能在这个类里进行创建该对象。 private的就不能new来创建对象了。构造方法本来就是为了方便在其他类创建不同的对象,所以构造方法一般用public修饰,protected、默认修饰符很少见。
使用private关键字可以声明属性,声明的属性不能被外部直接访问,
同样,可以使用private声明方法,声明的方法只能在类的内部看见.
构造方法上实际也可以使用private关键字声明,一旦声明之后,则外部就无法直接进行对象的实例化操作.
package com.ip;
/**
* 单例测试
* @author 王康
*
*/
public class Single {
private static Single instance = new Single();
private Single(){
}
public static Single getInstance(){
return instance;
}
public void print(){
System.out.println("单例测试!");
}
}
package com.ip;
/**
* 单例测试
* @author 王康
*
*/
public class SingleDemo {
/**
* @param args
*/
public static void main(String[] args) {
Single s = Single.getInstance();
s.print();
}
}
输出结果:
单例测试!
作者:
黄锦成
时间:
2012-2-17 09:36
不要被书上的只是误解了,实践才是真理
作者:
李建锋
时间:
2012-2-17 15:20
谢谢了,略有感悟!
作者:
b_boywindy
时间:
2012-2-17 16:07
单例模式 只能实例化一个对象, 所以用 private 这就是 单例模式的作用。
作者:
郑苑东
时间:
2012-2-18 20:18
使用了private变成私有的,使得外部不能调用。所以只有把他变成静态的。。让别人通过类名来调用。而不是用new的方法。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2