b.show();因为子类里没有show()方法,但是子类会重载父类里的show()方法,不会覆盖,所以会调用父类里的show()方法,
而show()方法里的num值还是父类的num值。所以会打印num=4;
如果子类里有show()方法会打印num=5;也就是说子类再覆盖父类里的show()方法时,show(){System.out.println(num+" * ");}方法会现在父类里查找num值,发现num=4,会先赋值给show()方法里的num,然后子类再覆盖(相当于调用)b.show(); |
|