我正在攻读我的OCA证书。并偶然发现了一个示例问题。
它会为您提供一个代码,并要求您确定哪个选项是正确的。代码如下:
class Employee {
private String name;
string address;
protected String phonenumber;
public float experience;
}
class Programmer extends Employee {
programmer (String val){
name = val;
}
String getName() {
return name;
}
}
class Office{
public static void main (String args[]){
new Programmer ("Harry").getName();
}
}
现在这个问题的答案是"编译错误"。我知道这是正确的,因为您无法访问String' name'因为它是私人的。
但是在选项中有一个说:"派生类程序员不能在其构造函数中访问其基类的变量。"
现在,我认为这基本上就是说构造函数' Programmer'无法访问变量' name'来自其基层'员工' (因为变量是公共的)。这让我相信这也是一个正确的陈述。但是,书中的答案页面声明了编译错误选项是唯一正确的声明。
我希望有人能解释为什么这个陈述是错误的。
答案 0 :(得分:0)
“派生类程序员无法访问其基类的变量 在它的构造函数中。“
好吧,类可以访问变量,而不管它是在构造函数中,在方法中还是在声明部分中。那没关系。