静态分派


  • 依赖静态类型 确定方法执行版本的分派[ 判断参数是什么类型]。
  • 编译期发生。
  • 非虚拟机执行。

动态分派


  • 依赖实际类型 确定方法执行版本。[ 判断实际对象是什么类型]
  • 向上转型后调用子类重写的方法。
  • 运行期(根据实际类型)决定。
  • 动态分派的实现依赖在方法区建立的方法表,如果子类没有重写父类的方法,则子类虚方法表中该方法的入口地址与父类指向的相同,为子类重写的方法的入口地址。