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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 江远云 中级黑马   /  2012-3-14 12:29  /  2679 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

创建工具类可以私有构造方法,像class ee private ee(){},这样就不可创建对象,为什么私有了构造方法就不能再创建对象了,创建对象还要依赖于构造方法吗,自己想的话每一类都有隐式的构造方法,不明白构造方法与类的关系,只明白是给类初始化的?

5 个回复

倒序浏览
new EE();这不就是调用构造方法吗?
回复 使用道具 举报
私有构造函数的目的是为了防止随便创建对象,这样你如果写这样的程序,只有你了解你的程序的实现原理,你知道怎么去创建一个对象,别人不知道,也就不可以随便的创建对象,可以提高安全性
回复 使用道具 举报
构造方法默认都是public的这样别的程序可以通过访问这个public的构造方法来创建这个类的一个实例,如果你将构造方法私有的话这个样其他程序就不能通过访问这个构造方法来创建这个类的实例了。不过私有的构造方法也有他的应用比如说单例模式。
public class Singleton{
  private Singleton(){
    generator = new Random();
  }
  public void setSeed(int seed){
    generator.setSeed(seed);
  }
  public int nextInt(){
    return generator.nextInt();
  }
  public static synchronized Singleton getInstance(){
    if (instance == null) {
      instance = new Singleton();
    }
    return instance;
  }
  private Random generator;
  private static Singleton instance;
}

package singleton;
public class Client{
    public static void main(String[] args){
       Singleton s1 = Singleton.getInstance();
       System.out.println(s1.toString());
       for(int i=0;i<10;i++){
           Singleton s2 = Singleton.getInstance();
           System.out.println("The randomed number is "+s2.toString());
       }
    }
}
回复 使用道具 举报

创建工具类可以私有构造方法,像class ee private ee(){},这样就不可创建对象,为什么私有了构造方法就不能再创建对象了:private ee(){}是用来创建一个空参数的对象,因为被私有化(private)的东西只能在当前类中使用,所以不能创建该类空参数对象,但是可以通过重载构造其他参数类型的对象。
创建对象还要依赖于构造方法吗,自己想的话每一类都有隐式的构造方法,不明白构造方法与类的关系:可以理解为构造函数就是用来实现该类创建对象的功能,也即是创建对象依赖构造方法,当隐式的构造方法显示定义后隐式的构造方法则不再生成,系统是检测到没有显示定义后才默认创建隐式构造方法的。
只明白是给类初始化的?
只明白是给类初始化的?:构造方法是用来给属于该类的对象进行初始化的,而不是初始化该类的。构造方法只在创建对象的时候执行一次,而不能被调用。

点评

真详细!  发表于 2012-3-14 14:38
回复 使用道具 举报
更正一下,构造函数不是给类初始化用的,而是给指定对象初始化用的.
如果构造函数私有化了,外界的类就不能调用本类的构造函数了,但是要创建对象必须要调用构造函数来初始化对象的,所以此时外界是不能创建对象的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马