Java继承与多态:解析calculate方法的返回值
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方法 }}
代码解析:
-
继承:
class B extends A表示类B继承自类A,因此B类拥有A类的所有非私有属性和方法。 -
方法重写: 类B中定义了与父类A同名、同参数列表、同返回类型的
calculate方法。这称为方法重写,允许子类提供自己的方法实现。 -
多态:
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。
原文地址: https://www.cveoy.top/t/topic/pVf 著作权归作者所有。请勿转载和采集!