当我在第2章遇到这个问题时,我正在阅读OCPJP(SCJP)一书。
class Uber{
static int y= 2;
Uber(int i){
this();
y = y*2;
}
Uber(){
y++
}
}
class Minor extends Uber{
Minor(){
super(y);
y=y+3;
}
public static void main(String[] args){
new Minor();
System.out.println(y);
}
}
这本书的答案应该是9,但我很困惑编译器是否会识别super(y)中的y;如果它确实如何呢?
提前完成。
答案 0 :(得分:1)
不,您提供的代码无法编译。如果Minor
扩展Uber
,它会编译 - 你确定它不在书中吗?
(即使在编译之后,代码也为我打印7,而不是9.我看不出它最终打印9 ...它从2开始,然后加倍到4,然后3是添加到7 ...)
答案 1 :(得分:0)
class Uber{
static int y= 2;
Uber(int i){
this();
y = y*2;
}
Uber(){
y++
}
}
class Minor extends Uber{
Minor(){
super(y);//this called uber class and it perfoms y =Y*2 so y contains now 4.
y=y+3;//here y value becomes 7
}
public static void main(String[] args){
new Minor();//it called minor class
System.out.println(y);//It prints 7
}
}
我评论你的代码。值y变化你可以看到。