其实我相信这样的结果可能大家嘟是惊讶的b.foo()实际是调用了父类中的foo()方法,方法主体为this.bar
由结果可以得到this实际指的是子对象
由输出结果可见,当创建子类对象时首先调用叻父类的构造方法再调用子类的构造方法,值得注意的是传给父类构造方法的this指针和传给子类构造方法的this指针完全相同,也就是说调用父類构造方法的并不是父类的对象所以在创建子类对象时并没有创建父类对象。this指向的仍然是子对象同时由于子类重写了父类的bar()方法,所以输出为B.barr
在原代码上做轻微改动如下:
由于此时子类并未重写父类方法故输出为T.bar