Java代码解析:子类重写方法及多态性详解
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。
解析:
-
继承和重写:
class B extends A表示B是A的子类,并继承了A的方法和属性。B中定义的calculate方法重写了父类A中同名的calculate方法。 -
多态性: 代码中
A a = new B();展示了Java的多态性。虽然变量a的类型是父类A,但它指向的是子类B的实例。 -
动态绑定: 当调用
a.calculate(2, 4)时,Java虚拟机会根据 运行时 对象的实际类型(这里是B)来决定调用哪个方法。
因此,最终调用的是子类 B 中的 calculate 方法,返回值为 2 * 4 = 8。
总结: 这段代码清晰地展示了Java中继承、方法重写和多态性的概念。理解这些概念对于编写可扩展和可维护的Java程序至关重要。
原文地址: https://www.cveoy.top/t/topic/pST 著作权归作者所有。请勿转载和采集!