代码的输出结果为什么是2

class A{
public int i=0;
A(int m){
i=1;
}
}
public class B extends A{
B(int m){
i=2;
}
}
public static void main(String args[]){
B b=new B(100);
System.out.println(b.i);
}

B继承A,先执行A的构造函数,然后执行B的构造函数
B的构造函数里把i赋值成2了
那不输出2输出什么
而且你的classB里并没有把m向上传递,也就是类A执行的是默认的无参构造函数,有参构造函数不执行

new B(100)执行这句的时候,由于B类继承了A类,所以先执行A类的构造函数,再执行B的构造函数,所以i=2