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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© continuer 中级黑马   /  2015-12-19 23:59  /  962 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

      构造方法可以创建对象或者是给对象初始化  请问这句话对吧,这是前几天考试遇到的一个题目。答案是,这个选项是对的,我就纳闷了,说构造方法可以给对象初始化这个没问题,但是构造方法能创建对象吗?好像不可以吧,问了一下导师,导师说的也比较模糊,也没听明白,问下大神,构造方法可以创建对象吗?翻了一些资料,也没给出很明确的答案。

13 个回复

倒序浏览
他要给对象初始化的先有对象吧,他可以创建对象的~!   
回复 使用道具 举报
构造方法的概念就是创建对象实例的方法,没有构造方法就不能创建对象,每个类如果没有手动写构造方法,java会自动补一个空参数的构造方法
回复 使用道具 举报
本帖最后由 sorryjsy 于 2015-12-20 10:43 编辑

  1. public class TestConstructor {

  2.         public static void main(String[] args) {
  3.                 new Inner();
  4.         }

  5.         static class Inner {
  6.                 private Inner mInstance;
  7.                 public Inner() {
  8.                         mInstance = new Inner();
  9.                 }
  10.         }
  11. }
复制代码
如上代码,在构造函数里创建自身对象的话,如果不加判断条件,会造成死循环,是不可以的。
但是如果加上判断条件,能够有效的终止代码而不死循环,使可以的。比如:
  1. public class TestConstructor {
  2.         

  3.         public static void main(String[] args) {
  4.                 new Inner();
  5.         }

  6.         static class Inner {
  7.                
  8.                 private Inner mInstance;
  9.                
  10.                 public Inner() {
  11.                         if(mInstance == null){
  12.                                 mInstance = new Inner();
  13.                         }
  14.                 }
  15.         }
  16. }
复制代码



回复 使用道具 举报
构造方法,是和类名相同的,可以通过构造方法创建该类对象,并给该对象初始化,
回复 使用道具 举报
路过,水一下
回复 使用道具 举报
new 是创建对象 构造方法用来初始化
回复 使用道具 举报
哦 明白了 谢谢各位大神,以前一直以为构造方法只是用来给对象初始化的,原来它也参与了,创建对象,那么,我是不是可以这样理解:构造方法做了2件事,先是创建对象,在给对象初始化。对吧
回复 使用道具 举报
孤独成瘾 来自手机 中级黑马 2015-12-20 21:04:00
9#
加油,加油,加油
回复 使用道具 举报
gogo,一起加油
回复 使用道具 举报
continuer 发表于 2015-12-20 20:55
哦 明白了 谢谢各位大神,以前一直以为构造方法只是用来给对象初始化的,原来它也参与了,创建对象,那么, ...

你说的很对
回复 使用道具 举报
continuer 发表于 2015-12-20 20:55
哦 明白了 谢谢各位大神,以前一直以为构造方法只是用来给对象初始化的,原来它也参与了,创建对象,那么, ...

学过了子类的初始化过程就明白了,其实new constuctor(); 这话做了好几件事;先把类class字节码加载进内存;然后静态代码块的初始化,构造代码块的初始化,父类的默认初始化,显示初始化,构造函数初始化,然后就是子类的初始化;初始化完成了,对象也就建立完成了;在建立对象时也是重复这样的过程;但是class字节码只有一份;
回复 使用道具 举报
谢谢各位大神
回复 使用道具 举报
孤独成瘾 来自手机 中级黑马 2015-12-22 22:34:33
14#
你说的不错,赞一个。666!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马