我想问一下
new分配内存和创建对象 同时调用构造器 构造器初始化对象 那么这个初始化指的是把类中的值赋值给变量  还是设置所有变量为默认值  还是设置默认值的操作是由new完成的  ? 
假如已经定义含参构造器,new输入实际参数,这时的实际参数传到构造器的形参是在哪一步完成的   在内存中怎么完成的 ?形参开始在对象中吗? 形参在对象中以什么方式存在?

解决方案 »

  1.   

    @fondOfJava
    大神你的回复怎么么了
      

  2.   

    预先说明,此思路是自己总结出来的,不具备权威性。最大的优先级 -> 静态 大于 动态:略。
    动态中的优先级:
    1.从父类到子类,加载所有方法
    2.从父类开始,执行属性默认初始化(置null)
    3.按照出现的顺序执行动态块和属性初始化
    4.执行构造方法
    5.进入子类,循环2-4。
      

  3.   

    个人理解:
    new是给对象分配内存;
    构造器是对类中的属性进行初始化;
    初始化就是将类中的属性进行默认赋值;例如类中有属性:int m_nValue;那么构造函数会默认给m_nValue初始化为0;
    而带有参数的构造函数,就和普通含参函数一样,在调用这个构造函数时进行值传递;
    形参在对象中是不存在的。含参的构造函数在new的时候会将实际参数赋值给对象中的属性
      

  4.   

    如果子类继承父类, 对子类使用new ()语句的话,编译器会先为子类分配内存,子类的中的域会被赋值为默认值,接着,调用父类的构造器,调用完毕,回到子类,为子类中域赋值(也就是代码中的值)。