Java代码解析:子类重写方法及多态性详解

问题: 以下Java代码中,calculate方法的返回值是多少?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(); System.out.println(a.calculate(2, 4)); }}

答案: 这段代码的输出结果是 8

解析:

  1. 继承和重写: class B extends A 表示 BA 的子类,并继承了 A 的方法和属性。B 中定义的 calculate 方法重写了父类 A 中同名的 calculate 方法。

  2. 多态性: 代码中 A a = new B(); 展示了Java的多态性。虽然变量 a 的类型是父类 A,但它指向的是子类 B 的实例。

  3. 动态绑定: 当调用 a.calculate(2, 4) 时,Java虚拟机会根据 运行时 对象的实际类型(这里是 B)来决定调用哪个方法。

因此,最终调用的是子类 B 中的 calculate 方法,返回值为 2 * 4 = 8

总结: 这段代码清晰地展示了Java中继承、方法重写和多态性的概念。理解这些概念对于编写可扩展和可维护的Java程序至关重要。

Java代码解析:子类重写方法及多态性详解

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

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