JAVA实例化时具体的运行原理

在下面的代码中在执行A aaa = new A();也就是实例化时为什么要运行一下public A(){}
class A {
    public A() {
        new B(this).print();// 调用B的方法
    }
    public void print() {
        System.out.println("HelloAA from A!");
    }
}
class B {
    A a;
    public B(A a) {
        this.a = a;
    }
    public void print() {
        a.print();//调用A的方法
        System.out.println("HelloAB from B!");
    }
}
public class HelloA {
    public static void main(String[] args) {
        A aaa = new A();
        aaa.print();
        B bbb = new B(aaa);
        bbb.print();
    }
}

 

必须在实例化的时候调用 constructor

一个类实例化的时候会默认调用类的无参构造方法,你写public A(){}相当于重写了默认的无参构造,优先调用重写的。如果这个类的构造方法再写个有参数的puiblic A(String name){ }创建对象的时候A aaa = new A("张三") 就会调用有参构造方法来实例化对象。