执行多态代码的时候,虚拟机中都发生了什么

最好能画图,说明下虚拟机中发生了什么~
求大神指点



class Test {

    public static void main(String[] args) {
        /*------重点在这里-执行这段代码的时候,虚拟机中发生了什么---------*/
        /*------主要是想了解,虚拟机中执行多态代码的时候,涉及到了哪些知识点---------*/
        System.out.println();
        Car bmw;
        bmw = new Bmw();
        bmw.run();
        Car benz;
        benz = new Benz();
        benz.run();
        /*-------在维基百科上看了一些,但是不知道为什么还是抓不住多态的重点---------*/
    }
}
class Car {

    public void run(){
        System.out.println("car run");
    }
}
class Bmw extends Car {

    @Override
    public void run() {
        System.out.println("bmw run");
    }


}
class Benz extends Car {

    @Override
    public void run() {
        System.out.println("benz run");
    }

}

就是基于多态的原则,bmw类型虽然是Car,但是它实际指向的是Bmw,所以调用run的时候会调用子类Bmw的run实现

发生在运行时的解析阶段,针对class文件的method_info表解析,将符号引用解析为对应的父类或子类的方法地址,