假设在Java中, `Person` 类有一个 `protected` 的 `name` 成员变量,以及一个 `public` 的 `info()` 方法,该方法尝试打印 `name` 和 `age`。 `age` 成员变量是 `private` 的。 现有 `Student` 类继承自 `Person` 类。若在 `Student` 类中创建一个对象,并通过该对象调用父类继承来的 `info()` 方法,以下哪个陈述最准确地描述了方法执行的结果?

答案解析

选项 B 是正确的。 `info()` 方法是在 `Person` 类中定义的,它可以访问 `Person` 类中的所有成员,包括 `private` 的 `age`。 当 `Student` 类继承 `Person` 类,并调用继承来的 `info()` 方法时,该方法会在 `Person` 类的上下文中执行,因此能够访问 `Person` 类的 `private` 成员 `age`。`info()`本身能访问父类`Person`的私有变量`age`,但`Student`不能直接访问,但`Student`调用继承自`Person`的info()方法,info()方法本身可以访问到`Person`的私有变量`age`。选项 A错误,info方法不会受到Student的影响,可以访问到age,但不会直接被Student访问。选项 C 和 D 错误,因为 `info()` 方法本身能够访问 `age`,且访问权限限制在编译时检查,并不导致运行时异常。
正确答案:B
随机推荐
开始刷题