在下面的代码中在执行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("张三") 就会调用有参构造方法来实例化对象。