给定以下Java代码片段: ```java class Parent { public int value = 10; } class Child extends Parent { public int value = 20; } public class Main { public static void main(String[] args) { Parent p = new Child(); System.out.println(p.value); } } ``` 程序的输出结果是什么?

答案解析

本题考察的是继承中的属性覆盖和多态的理解。在Java中,实例变量的访问遵循声明时的类型。尽管`p`指向的是一个`Child`对象,但由于`p`被声明为`Parent`类型,因此访问的是`Parent`类中的`value`实例变量,而不是`Child`类中的。选项B错误,因为它假设访问的是`Child`类的属性。选项C错误,Java中子类可以定义与父类同名的实例变量,不会导致编译错误,这属于变量的隐藏而非覆盖。选项D错误,程序可以正常运行,不会产生运行时错误。正确答案是选项A,因为程序会打印`Parent`类的`value`属性。
正确答案:A
随机推荐
开始刷题