哈哈重载函数。
因为子类class Bart 中的void doh(Milhouse m) {} 啥夜没干
b.doh(new Milhouse()); 调用了class Bart 中的void doh(Milhouse m) {} 
因为它啥也没干,所以你删了,没影响
如果你作如下修改
class Milhouse {} class Bart extends Homer { 
void doh(Milhouse m) {System.out.println("Hello!!"); } 

你再试试去?看看有没有这段代码程序结果还一样么

解决方案 »

  1.   

    “名字隐藏”就是“方法过载”?think in java 中“方法过载”是单独一章,这个为什么不写在“方法过载”里面?而且我还不明白它这个“名字隐藏”是什么“隐藏”什么东西?如果就是“方法过载”,那这个根本就不用再次强调。
      

  2.   

    void doh(Milhouse m) {} 是空方法删除当然看不出影响.已经说的很清楚了:
    在衍生类里对那个方法名的重新定义就不会隐藏任何基础类的版本。
    隐藏是指覆写了父类的方法.隐藏的是父类的方法.
    你在Bart类中加上这个试试:
    float doh(float f) { 
    System.out.println("--Bart doh(float)"); 
    return 1.0f; 

      

  3.   

    就是重载啊,衍生类里对父类的方法的重新定义。
    这样就在子类调用这个方法时,调用的是子类的方法不是父类的方法
    即覆盖了父类的方法或者说隐藏了父类的方法。
    另外中文版的think in java翻译的太差
    建议你对照着英文版的看