黑马程序员技术交流社区

标题: 构造函数私有化 [打印本页]

作者: 李健_8    时间: 2012-10-8 22:27
标题: 构造函数私有化
本帖最后由 李健_8 于 2012-10-9 12:10 编辑

为什么构造函数私有化就不能  在类外new对象
作者: 李兆宁    时间: 2012-10-8 22:34
私有后就不能在其他类中访问,构造函数私有后,就没法在别的对象中调用构造函数。
在new对象时,就调用了构造方法,而方法私有,所以不能创建了。。
作者: 王虎    时间: 2012-10-8 22:47
本帖最后由 王虎 于 2012-10-8 22:51 编辑

这是权限控制的问题, 1.首先明白在类外new 对象()其实是调用构造函数
比如
public static void main(String[] args)
{
     Person  p = new Person();
}

class Person
{
      Person()
     {}

}
2.你的目的是new 一个对象,说白了是为了用这个对象(比如做一些事或用这个对象的属性),那这样用单例模式就可说明一切
        首先私有化构造函数
        其次在本类中new对象
        最后提供一个对外的访问方式返回对象供本类外部使用

代码参考:class          SingleTon
                {
                        private static SingleTon single = new SingleTon();
                        
                        private SingleTon()
                        {
                        

                        }
                        public SingleTon getInstance()
                        {
                                
                                return single;
                        }
                }

               这样设计会比直接new个对象更好些,也保证了内存的有效使用
作者: qhasilver    时间: 2012-10-8 22:54
在类外new对象,本身就是对类的构造方法的调用,没写构造方法时是默认调一个空的构造方法,你显示写出来了,并私有化了,根据java的权限控制,在外部类是无法访问其他类的私有属性或方法的。

作者: 叶征东    时间: 2012-10-8 23:54
在毕老师的视频中,第6天的第7个视频中是这样讲的.
在对象的初始化过程中,对象进行了对应的构造函数的初始化之后,
才会将地址值赋给栈内存中的引用变量,
将构造函数私有后,都不能被访问了,也就不能进行初始化这一步骤了,
后面的步骤也就不能进行了.
作者: 刘 佳    时间: 2012-10-9 04:08
先明确两点:

1,函数私有化之后只能在本类中可以访问。

2,构造函数是用于给对象初始化的

想创建该类对象必须先对对象进行初始化,否则不能建立对象。你把构造函数私有后,只能本类访问,在其他类中是访问不到的,既然不能初始化,当然无法建立对象




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