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 stub 5 PhoneBill phone = new PhoneBill(); 6 phone.foo2(); 7 } 8 }
运行结果如下:
PhoneBill:foo2
PhoneBill:foo1
Bill:foo2
子类里通过super调用父类的foo2方法,该方法里又调用foo1,为什么调用的是子类的foo1方法呢?是因为foo1方法被子类覆盖了的原因吗?哎,搞不清这里的方法是怎么调用的