代码执行顺序是这样的 , 首先A继承B, B是父类, 通常情况下 子类被调用, 父类的构造函数一定会先执行.. 所以先执行的是Public B方法 然后 B方法里有个draw(); draw方法被子类重写, 根据概念, 重写一定调用子类, 所以是 子类的draw, 但是, 这时候我们还没有真正跳出父类的构造函数, 因为draw的方法还没执行完.. 所以 这时候 int radius 是个空值, 默认 int 空值就是0, 然后打印出0后 跳出父类的构造函数.. 接着 执行子类的方法.. 传进去一个5 打印出最后一个... 这道题 重点就是 父类里的子类方法.. 执行的时候 由于是在父类的构造方法里, 子类方法没有被真正意义上的调用.. 所以 子类里的值没有传进去.. 多看点书吧.. 书上都有写呢 |