黑马程序员技术交流社区

标题: 用构造函数获取对象和静态方法获取对象的区别? [打印本页]

作者: 王龙彪    时间: 2012-7-20 12:49
标题: 用构造函数获取对象和静态方法获取对象的区别?
本帖最后由 王龙彪 于 2012-7-20 13:30 编辑

有的类不提供构造函数,却提供一个静态方法返回一个该类的对象,这样有什么大的区别吗?
例如:
java.util.regex
类 Pattern
这个类就没有构造函数
但提供了一个静态方法就可以返回一个Pattern类的对象
  1. static Pattern compile(String regex)
复制代码
这跟通过构造函数传一个参数进去有区别吗?



作者: 陈世涛    时间: 2012-7-20 13:14
静态构造函数
如果是静态的话就不用实例化外层直接调用了
如果class里面有static成员,并且你没有声明static的构造函数.系统会自动添加一个static构造函数
静态构造方法是在调用静态成员时,进行的类的初始化
添加static关键字,不能添加访问修饰符,因为静态构造函数都是私有的。
静态构造函数是不可继承的.



实例构造函数
而实例构造方法是在实例化类是进行类的初始化。
而如果你是public   helloworld()   
那么外层调用的时候就必须是      
类名   cls   =   new   类名();
然后cls.helloworld()   了


希望楼主可以看看,理解下。
作者: 周玉龙    时间: 2012-7-20 13:23
我的理解是参考单例设计模式:
不提供构造方法就是不允许创建对象,.你注意一下凡是API中没有构造方法,那么他必定有一个返回类型是自身对象的方法.这样确保了对象的唯一性.
这种情况很类似于单例.单例只是构造被私有化了.
这些方式都是提供公共访问获取对象的.回去对象的方法一般是 public static 的.方便于用户获取对象.
作者: 王龙彪    时间: 2012-7-20 13:30
周玉龙 发表于 2012-7-20 13:23
我的理解是参考单例设计模式:
不提供构造方法就是不允许创建对象,.你注意一下凡是API中没有构造方法,那么他 ...

嗯,单例也可以用在类中final一个对象
静态方法获取对象我觉得最大的好处应该是不用new对象就能使用类中的变量
作者: 芦曦    时间: 2012-7-20 13:32
每一个类都有构造函数的。
当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。
当在类中自定义了构造函数后,默认的构造函数就没有了。

在运行上也有不同。
构造函数是在对象一建立就运行。给对象初始化。
而一般方法是对象调用才执行,给是对象添加对象具备的功能。
一个对象建立,构造函数只运行一次。
而一般方法可以被该对象调用多次。




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