塞特斯不工作

时间:2012-05-03 16:48:01

标签: java

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?

1 个答案:

答案 0 :(得分:4)

  

现在我的问题是:为什么我得到10而不是100?

显示的代码打印出100.最可能的解释是您没有运行您说您正在运行的代码。这可能是由于复制和粘贴错误,部署问题等原因造成的。

通过在10的构造函数前添加void,可以巧妙地修改代码以打印Shape1的一种鲜为人知但又令人讨厌的方式:

void Shape1() {
    xPos = 100;
    yPos = 200;
}

这会将Shape1()从构造函数转换为普通方法(在对象构造期间不会自动调用)。

我的编译器接受此修改,并且在运行时代码打印出10

我实际上曾经不得不处理由此引起的真正的错误。花了一点时间发现,我可以告诉你。