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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李健_8 中级黑马   /  2012-10-8 22:27  /  2247 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李健_8 于 2012-10-9 12:10 编辑

为什么构造函数私有化就不能  在类外new对象

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
私有后就不能在其他类中访问,构造函数私有后,就没法在别的对象中调用构造函数。
在new对象时,就调用了构造方法,而方法私有,所以不能创建了。。

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 王虎 于 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个对象更好些,也保证了内存的有效使用

评分

参与人数 2技术分 +1 黑马币 +30 收起 理由
李健_8 + 30 很给力!
韩军博 + 1

查看全部评分

回复 使用道具 举报
在类外new对象,本身就是对类的构造方法的调用,没写构造方法时是默认调一个空的构造方法,你显示写出来了,并私有化了,根据java的权限控制,在外部类是无法访问其他类的私有属性或方法的。
回复 使用道具 举报
在毕老师的视频中,第6天的第7个视频中是这样讲的.
在对象的初始化过程中,对象进行了对应的构造函数的初始化之后,
才会将地址值赋给栈内存中的引用变量,
将构造函数私有后,都不能被访问了,也就不能进行初始化这一步骤了,
后面的步骤也就不能进行了.

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
先明确两点:

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

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

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

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马