日期:2014-05-20  浏览次数:20690 次

基类构造函数调用导出类的方法?
代码如下:
class Glyph{
      void draw(){print("Glyph.draw()");}
     Glyph(){
           print("Glyph()  before draw()");
     }
}

class Round extends Glyph{
   private int radius = 1;
    Round(int r){
        radius = r;
       print("Round.Round(),  radius = "+radius);
  }
void draw(){
   print ("Round.draw.radius = "+radius);
}
}
 public class Poly{
public static void main(String[] args){
    new Round(5);
}
}


输出结果是:
Glyph() before draw()
Round.draw(),radius = 0
Glyph() after draw()
Round.Round(),radius = 5


我想问一下,在基类Glyph的构造函数中调用了draw()函数,但这个draw()函数确实导出类的draw()函数,而不是基类中draw()函数,为什么呢?
------解决方案--------------------
我来回答楼主的问题。
就是java中回溯的概念,先在子类(导出类)找是否有对应的方法,没有再去调用父类(基类)的方法