在给定的Java代码示例中,`Student`类中的`name`和`age`成员变量没有显式使用任何访问修饰符。如果一个类`SubStudent`继承自`Student`,并且两个类都位于不同的包中。同时,在另外一个独立的类`Example`中,创建了`Student`和`SubStudent`的实例。以下哪项陈述最准确地描述了`SubStudent`和`Example`分别对`Student`类成员变量的访问权限?

答案解析

本题考察Java中的默认访问权限(package-private)和继承关系下的访问权限。当类成员变量没有使用任何访问修饰符时,它们具有默认的包访问权限,这意味着只有在同一个包内的类才可以访问它们。选项A错误,虽然`SubStudent`继承自`Student`,但由于他们位于不同的包中,`SubStudent`不能访问`Student`类的包访问权限成员`name`和`age`。选项C错误,由于`SubStudent`和`Example`都和`Student`类不在同一个包中,因此两者都不能访问 `name`和 `age`。选项D错误, `Example`也与 `Student`不在同一包下,因此也不能访问 `name`和 `age`。选项B正确,根据默认的包访问权限规则,当子类在不同的包中时无法访问父类的默认访问权限的成员,且外部类在不同包也无法访问,因此 `SubStudent`和`Example`均不能访问 `Student`类的 `name`和 `age`。
正确答案:B
随机推荐
开始刷题