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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Friends★ 中级黑马   /  2012-4-21 11:35  /  2416 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

再看毕老师的单例设计模式的时候有个疑问?   上面说:将构造函数私有化后就不能创建对象了,然后我就有疑问了?



为什么构造函数私有化后就不能创建对象了?构造函数是给对象进行初始化的,难道对象初始化,一定要在构造函数中吗?一般方法不是也可以吗?

昨天各位同学回答的,主要意思是被private修饰后的构造函数不能被外部访问!这个我知道。


我现在想知道的是:对象的初始化在一般方法中可不可以,如果可以的话,为什么又说构造函数私有化后就不能创建对象了。

            

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

8 个回复

倒序浏览
呵呵。
对象初始化只能在构造函数中。
私有化构造函数是不能直接创建对象。
张老师说了。不要问那么多为什么。就是这样。没那么多为什么。
回复 使用道具 举报
邓斌 发表于 2012-4-21 11:42
呵呵。
对象初始化只能在构造函数中。
私有化构造函数是不能直接创建对象。

对象初始化只能在构造函数中。如果这样的话,我就明白了,谢谢啊!
回复 使用道具 举报
私有的构造函数是单例模式,也就是在你整个程序中只能一个这样的对象。
回复 使用道具 举报
对象的初始化在一般方法中是不可以的!!
构造函数 是一种特殊的方法 主要用来在创建对象时初始化对象 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 特别的一个类可以有多个构造函数 可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载,它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。

首先构造函数,直接从字面上理解,它是构造对象的函数,创建一个对象就是调用相应类的构造函数!
如果对象的初始化在一般方法中是可以的,那构造函数还有什么用?那构造函数这个概念就可以废弃了。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
内部创建并提供接口,外面只能用,不能创建
回复 使用道具 举报
张超超 黑马帝 2012-4-21 14:52:32
7#
  单例模式是众多设计模式中的之一,既然要实现单例,当然要实现众多限制:
  单例模式适合于一个类只有一个实例的情况,比如窗口管理器,打印缓冲池和文件系统,它们都是原型的例子。典型的情况是,那些对象的类型被遍及一个软件系统的不同对象访问,因此需要一个全局的访问指针,这便是众所周知的单例模式的应用。当然这只有在你确信你不再需要任何多于一个的实例的情况下。

  单例模式的用意在于前一段中所关心的。通过单例模式你可以:

  a、确保一个类只有一个实例被建立

  b、提供了一个对对象的全局访问指针

  c、在不影响单例类的客户端的情况下允许将来有多个实例

回复 使用道具 举报
徐鑫 发表于 2012-4-21 11:49
对象的初始化在一般方法中是不可以的!!
构造函数 是一种特殊的方法 主要用来在创建对象时初始化对象 即为 ...

谢谢回答!
回复 使用道具 举报
为什么构造函数私有化后就不能创建对象了?
可以在本类中创建对象,而不能在类的外面创建对象,这是一种保护机制,防止出现很多对象。
对象一建立就会调用与之对应的构造函数。(类中至少有一个默认的构造函数)
构造函数的作用:可以用于给对象进行初始化。
构造函数的小细节:
1,当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。
2,当在类中自定义了构造函数后,默认的构造函数就没有了。
3,构造函数和一般函数在写法上有不同。
4,在运行上也有不同。
5,构造函数时在对象一建立就运行。给对象初始化。
6,而一般方法是对象调用才执行,给是对象添加对象具备的功能。
7,一个对象建立,构造函数只运行一次,而一般方法可以被该对象调用多次。
8,当分析事物时,该事物存在具备一些特性后者行为,那么将这些内容定义在构造函数中。
构造代码块:
作用:给对象进行初始化。对象一建立就运行,而且优先于构造函数执行。
和构造函数的区别:
1,构造代码块是给所有对象进行统一初始化,
2,而构造函数是给对应的对象初始化。
3,构造代码块中定义的是不同对象共性的初始化内容。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

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