Java继承与多态:解析calculate方法的返回值

您提供的Java代码片段展示了面向对象编程中继承多态的概念。让我们逐步分析,理解为何calculate方法的返回值是8。javaclass A { int calculate(int a, int b) { return a + b; }}

class B extends A { int calculate(int a, int b) { return a * b; }}

public class Main { public static void main(String[] args) { A a = new B(); // 创建B类的实例,并用A类引用指向它 System.out.println(a.calculate(2, 4)); // 调用calculate方法 }}

代码解析:

  1. 继承: class B extends A 表示类B继承自类A,因此B类拥有A类的所有非私有属性和方法。

  2. 方法重写: 类B中定义了与父类A同名、同参数列表、同返回类型的calculate方法。这称为方法重写,允许子类提供自己的方法实现。

  3. 多态: A a = new B(); 创建了一个B类的实例,并使用A类的引用a指向它。 * 在编译时,编译器看到的是A类的引用a,以及A类中定义的calculate(int a, int b)方法。 * 在运行时,由于实际指向的是B类的实例,Java虚拟机会调用B类中重写的calculate(int a, int b)方法,执行乘法运算,返回 2 * 4 = 8

总结:

尽管a是A类的引用,但由于它指向B类的实例,程序实际调用的是B类中重写的calculate方法。这就是多态的体现,允许程序在运行时根据对象的实际类型来调用相应的方法。

因此,这段代码的输出结果是 8

Java继承与多态:解析calculate方法的返回值

原文地址: https://www.cveoy.top/t/topic/pVf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录