public class Shape{
public int xPos = 10;
public int yPos = 20;
Shape(){
}
public int getXpos(){
return xPos;
}
public void setXpos(int x){
this.xPos = x;
}
public int getYpos(){
return yPos;
}
public void setYpos(int y){
this.yPos = y;
}
}
public class Shape1 extends Shape{
Shape1(){
xPos = 100;
yPos = 200;
}
}
public class Test{
public static void main(String[] args) {
Shape1 shape1 = new Shape1();
System.out.println(shape1.getXpos());
}
}
为什么我得到10而不是100?
答案 0 :(得分:4)
现在我的问题是:为什么我得到10而不是100?
显示的代码打印出100.最可能的解释是您没有运行您说您正在运行的代码。这可能是由于复制和粘贴错误,部署问题等原因造成的。
通过在10
的构造函数前添加void
,可以巧妙地修改代码以打印Shape1
的一种鲜为人知但又令人讨厌的方式:
void Shape1() {
xPos = 100;
yPos = 200;
}
这会将Shape1()
从构造函数转换为普通方法(在对象构造期间不会自动调用)。
我的编译器接受此修改,并且在运行时代码打印出10
。
我实际上曾经不得不处理由此引起的真正的错误。花了一点时间发现,我可以告诉你。