程序运行的结果为什么是4和3啊

public class Parent{
public int a;
public Parent() {
}
public Parent (int a)
this.a=a;
}
public void printInfo(){
System.out.println(a);
}
}
class Son extends Parent{
public int b;
public Son(int b) {
this.b = b;
}
public Son (int a, int b)
{
super (2) ;
this.b = b;
}
@Override
public void printInfo(){
System.out.println(this.a+ this.b);
}
public static void main(String[] args) {
Parent p=new Parent(4) :
p.printInfo();
Son s= new Son(3) :
s.printInfo();
}
}

Parent p=new Parent(4) 有参构造了一个Parent
p.a = 4
p.printInfo();输出p中的a的值也就是4

Son s= new Son(3) :有参构造了一个Son
this.b = b;使得s.b = 3
输出a + b = 0 + 3 = 3

p 和 s之间没有关系的,这是两个对象

p 有一个属性 a,值为4
s 有两个属性 a和b 值为 0 和 3