网上很多资料说super指向父类对象,感觉这种说法有误,看看下边的例子:
Parent类:
public class Parent {
public void A(){
System.out.println("This is Parent A");
B();
}
public void B() {
System.out.println("This is Parent B");
}
}
Child类:
public class Child extends Parent{
@Override
public void A() {
super.A();
super.B();
}
public void B(){
System.out.println("This is Child B");
}
public static void main(String[] args){
Child child = new Child();
child.A();
}
}
运行结果:
This is Parent A
This is Child B
This is Parent B
如果super指向了父类对象,那么结果中的第二句应该是“This is Parent B”,而程序还是调用了子类的B方法,因此super并未指向父类对象。因此本人觉得super只是一种调用父类方法的声明,而在执行父类方法的过程中,仍是子类对象在起作用。