输出结果应该是1,3,4。当你B.C obj= new B().new C();执行这句的时候,先找到B类,执行B类构造,在B类构造中调用父类的构造,将2赋给A.val。A类构造执行完,B类构造执行完。找到C类构造,将4赋给A.val,然后执行三个打印语句,因为B,C类的val没有改变过,先打印B的val,后打印C的val,最后打印C父类的Val。 B.this.val指B对象的val值,C.this.val指C对象的val值,super.val指C父类的val值。
输出结果:
1
3
4
及分别代表B.this.val;C.this.val;super.val
这三个的值,B.this.val 意思为B类的对象的val值,其中this代表当前对象,C.this.val类似
super.val指代父类级A类的val,super(4)初始化val为4
B.this.val B自己的val属性;C.this.val C自己的val属性;super.val A自己的val属性