哈哈重载函数。
因为子类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!!"); }
}
你再试试去?看看有没有这段代码程序结果还一样么
因为子类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!!"); }
}
你再试试去?看看有没有这段代码程序结果还一样么
在衍生类里对那个方法名的重新定义就不会隐藏任何基础类的版本。
隐藏是指覆写了父类的方法.隐藏的是父类的方法.
你在Bart类中加上这个试试:
float doh(float f) {
System.out.println("--Bart doh(float)");
return 1.0f;
}
这样就在子类调用这个方法时,调用的是子类的方法不是父类的方法
即覆盖了父类的方法或者说隐藏了父类的方法。
另外中文版的think in java翻译的太差
建议你对照着英文版的看