当前位置:编程学习 > JAVA >>

弱弱的问句:java中类对象的初始化问题


public class Test {

public static void main(String[] args) {
A aa=new A();
}
}
class A
{
private B b;
public A()
{
b=new B(this);//当前对象都没有创建完毕就可以把它当做参数?
}
}
class B
{
private A a;
public B(A a)
{
this.a=a;
}
}

--------------------编程问答-------------------- this本身就是代表当前对象。既然它是一个对象,为什么不能做实参传进去呢? --------------------编程问答-------------------- 我想应该是生成的时候动态的传进这个A的实例 --------------------编程问答-------------------- 因为你没有分清楚实参和形参 --------------------编程问答-------------------- 在网上看到一句话:对象是由 new 运算符创建的,且在任何构造函数执行之前就已经创建完毕了; 
不知道用这个来解释对不对 --------------------编程问答--------------------
引用 4 楼 louistao 的回复:
在网上看到一句话:对象是由 new 运算符创建的,且在任何构造函数执行之前就已经创建完毕了; 
不知道用这个来解释对不对

构造函数是用来初始化的,那时候已经有对象了 --------------------编程问答-------------------- --------------------编程问答--------------------
public class Test {
    
    public static void main(String[] args) {
        A aa=new A();
    }
}
class A
{
    private B b;
    public A()
    {
        b=new B(this);//当前对象都没有创建完毕就可以把它当做参数?
    }
}
class B
{
    private A a;
    public B(A a)
    {
        this.a=a;
    }
}
个人的分析:
 A aa=new A();
1先初始化A的成员b,为b分配一块内存空间
2在分配的空间中创建B的对象
3初始化b的的成员a,a现在没有引用任何对象
4调用B的构造方法,目前b中的成员a应该为null
(这里是不是应该出空指针异常?)
5调用A的构造方法


补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,