面试题四:怎样理解Java的方法分派?

怎样理解Java的方法分派?

一、面试官视角:这道题想考察什么?

  • 多态、虚方法表的认识
  • 对编译和运行时的理解和认识
  • 对Java语言规范和运行机制的深入认识
  • 横向对比各类语言的能力
    • Groovy,Gradle DSL 5.0以前唯一正式语言
    • C++,Native程序开发必备

二、题目剖析:

  • 怎样理解Java的方法分派?

    • 就是确定调用谁的、哪个方法

    • 针对方法重载的情况进行分析

    • 针对方法覆写的情况进行分析

      调用谁的:取决于调用者在运行时的实际类型。

      调用哪个:取决于调用者在编译时的声明类型和参数类型是否一致。

      • 静态分派 - 方法重载分派
        • 编译期确定
        • 依据调用者的声明类型和方法参数类型匹配分派
      • 动态分派 - 方法覆写分派
        • 运行时确定
        • 依据调用者的实际类型分派