java虚拟机在执行多态时候的执行情况,先执行父类的构造方法,再执行子类的构造方法,再执行子类的方法;即用代码来叙述:
public class A{
public A(){
System.out.println("构造A");
}
public void doSomething(){
System.out.println("A doSomething!");
}
}
public class B extends A{
public B(){
System.out.println("构造B");
}
public void doSomething(){
System.out.println("B doSomething!");
}
}
public class Test{
public static void main(String[] args){
A a =new B();
a.doSomething();
}
}
执行结果:
构造A
构造B
B doSmomething!
执行示意图:
继承的关系好似内部又有一个父类的对象,所以在执行的时候先要在内部构建一个父类的对象,再构造子类对象,所以输出结果为先A后B,至于方法,则是调用的方法区的东西,构造了谁的实例就调用动态绑定的方法。