MST

星途 面试题库

面试题:Java多态下父类与子类方法调用优先级之基础分析

假设有如下Java代码: class Parent { public void printMessage() { System.out.println("Parent's message"); } } class Child extends Parent { @Override public void printMessage() { System.out.println("Child's message"); } } public class Main { public static void main(String[] args) { Parent parent1 = new Parent(); Parent parent2 = new Child(); parent1.printMessage(); parent2.printMessage(); } } 请分析并写出程序的输出结果,并解释原因。
21.4万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 输出结果
    Parent's message
    Child's message
    
  2. 原因解释
    • Parent parent1 = new Parent(); 这行代码创建了一个 Parent 类的实例 parent1。当调用 parent1.printMessage() 时,会调用 Parent 类中定义的 printMessage 方法,所以输出 Parent's message
    • Parent parent2 = new Child(); 这行代码创建了一个 Child 类的实例,但是使用 Parent 类型的变量 parent2 来引用它。由于 Child 类重写了 Parent 类的 printMessage 方法,在Java中,方法调用遵循动态绑定(运行时多态)机制。当通过 parent2 调用 printMessage 方法时,实际调用的是 Child 类中重写的 printMessage 方法,所以输出 Child's message