java名字的埋没
只有C++措施员大概才会惊奇于名字的埋没,因为它的事情道理与在C++里是完全差异的。假如Java基本类有一个要领名被“过载”利用多次,在衍生类里对谁人要领名的从头界说就不会埋没任何基本类的版本。所以无论要领在这一级照旧在一个基本类中界说,过载城市生效:
//: Hide.java // Overloading a base-class method name // in a derived class does not hide the // base-class versions class Homer { char doh(char c) { System.out.println("doh(char)"); return 'd'; } float doh(float f) { System.out.println("doh(float)"); return 1.0f; } } class Milhouse {} class Bart extends Homer { void doh(Milhouse m) {} } class Hide { public static void main(String[] args) { Bart b = new Bart(); b.doh(1); // doh(float) used b.doh('x'); b.doh(1.0f); b.doh(new Milhouse()); } } ///:~
正如下一章会讲到的那样,很少会用与基本类里完全一致的签名和返回范例来包围同名的要领,不然会使人感想疑惑(这正是C++不答允那样做的原因,所以可以或许防备发生一些不须要的错误)。