你的位置:首页 > Java教程

[Java教程]Java super关键字调用父类的方法疑惑


写了一个例子,运行结果不是很理解,如下:

 1 public class PhoneBill extends Bill { 2   @Override 3   public void foo1(){ 4     System.out.println("PhoneBill:foo1"); 5   } 6   @Override 7   public void foo2(){ 8     System.out.println("PhoneBill:foo2"); 9     super.foo2();10   }11 }

1 public class Bill {2   public void foo1(){3     System.out.println("Bill:foo1");4   }5   public void foo2(){6     this.foo1();7     System.out.println("Bill:foo2");8   }9 }

1 public class test {2 3   public static void main(String[] args) {4     // TODO Auto-generated method stub5     PhoneBill phone = new PhoneBill();6     phone.foo2();7   }8 }

运行结果如下:

 

PhoneBill:foo2PhoneBill:foo1Bill:foo2

 

 子类里通过super调用父类的foo2方法,该方法里又调用foo1,为什么调用的是子类的foo1方法呢?是因为foo1方法被子类覆盖了的原因吗?哎,搞不清这里的方法是怎么调用的