黑马程序员技术交流社区

标题: 关于Java基础中构造方法 [打印本页]

作者: continuer    时间: 2015-12-19 23:59
标题: 关于Java基础中构造方法
      构造方法可以创建对象或者是给对象初始化  请问这句话对吧,这是前几天考试遇到的一个题目。答案是,这个选项是对的,我就纳闷了,说构造方法可以给对象初始化这个没问题,但是构造方法能创建对象吗?好像不可以吧,问了一下导师,导师说的也比较模糊,也没听明白,问下大神,构造方法可以创建对象吗?翻了一些资料,也没给出很明确的答案。
作者: 意念痴心灬戒贪    时间: 2015-12-20 00:19
他要给对象初始化的先有对象吧,他可以创建对象的~!   
作者: river1205    时间: 2015-12-20 06:30
构造方法的概念就是创建对象实例的方法,没有构造方法就不能创建对象,每个类如果没有手动写构造方法,java会自动补一个空参数的构造方法
作者: sorryjsy    时间: 2015-12-20 10:41
本帖最后由 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. }
复制代码




作者: 天若也易老    时间: 2015-12-20 10:57
构造方法,是和类名相同的,可以通过构造方法创建该类对象,并给该对象初始化,
作者: 焚寂    时间: 2015-12-20 11:47
路过,水一下
作者: 洋葱头头    时间: 2015-12-20 20:16
new 是创建对象 构造方法用来初始化
作者: continuer    时间: 2015-12-20 20:55
哦 明白了 谢谢各位大神,以前一直以为构造方法只是用来给对象初始化的,原来它也参与了,创建对象,那么,我是不是可以这样理解:构造方法做了2件事,先是创建对象,在给对象初始化。对吧
作者: 孤独成瘾    时间: 2015-12-20 21:04
加油,加油,加油
作者: continuer    时间: 2015-12-20 21:07
gogo,一起加油
作者: xiaodongwubukun    时间: 2015-12-22 00:47
continuer 发表于 2015-12-20 20:55
哦 明白了 谢谢各位大神,以前一直以为构造方法只是用来给对象初始化的,原来它也参与了,创建对象,那么, ...

你说的很对
作者: 石三伢子1    时间: 2015-12-22 10:23
continuer 发表于 2015-12-20 20:55
哦 明白了 谢谢各位大神,以前一直以为构造方法只是用来给对象初始化的,原来它也参与了,创建对象,那么, ...

学过了子类的初始化过程就明白了,其实new constuctor(); 这话做了好几件事;先把类class字节码加载进内存;然后静态代码块的初始化,构造代码块的初始化,父类的默认初始化,显示初始化,构造函数初始化,然后就是子类的初始化;初始化完成了,对象也就建立完成了;在建立对象时也是重复这样的过程;但是class字节码只有一份;
作者: continuer    时间: 2015-12-22 22:30
谢谢各位大神
作者: 孤独成瘾    时间: 2015-12-22 22:34
你说的不错,赞一个。666!!!




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