Java 二传手不工作

Java 二传手不工作,java,Java,为什么我的成绩是10而不是100 现在我的问题是:为什么我的成绩是10而不是100 显示的代码打印出100。最可能的解释是,您没有运行您所说的正在运行的代码。这可能是由于复制和粘贴错误、部署问题等造成的 一种鲜为人知但令人讨厌的方法是,在Shape1的构造函数前面添加void,可以巧妙地修改代码以打印10: public class Shape{ public int xPos = 10; public int yPos = 20; Shape(){ }

为什么我的成绩是10而不是100

现在我的问题是:为什么我的成绩是10而不是100

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

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

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());
    }

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

我的编译器接受这个修改,当我运行它时,代码会打印出
10

事实上,我曾经不得不处理一个由这个引起的真正的bug。我可以告诉你,我花了一点时间才发现

现在我的问题是:为什么我的成绩是10而不是100

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

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

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());
    }

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

我的编译器接受这个修改,当我运行它时,代码会打印出
10


事实上,我曾经不得不处理一个由这个引起的真正的bug。我可以告诉你,我花了一点时间才发现。

这甚至不是有效的Java。让我们看看你正在运行的实际代码。我想这是家庭作业吗?好像是这样。应该标记为1。不,我只是在做我自己的程序。你确定这就是你的全部代码吗?实际上我无法复制,它对我来说工作正常,输出100。这甚至不是有效的Java。让我们看看你正在运行的实际代码。我想这是家庭作业吗?好像是这样。应该标记为一个。不,我只是在做我自己的程序。你确定这就是你的全部代码吗?实际上我无法复制,它对我来说运行良好,输出100.void Shape1()-为什么你要将构造函数更改为方法?你真的读过答案吗?他的全部观点是,编写的代码是正确的……但这一微小的更改将导致代码以问题描述的方式中断。意思与原来的(问题前的)代码很可能是错误的。dude ans很好,我同意上面所描述的(+1)。但问题是为什么我得到的是10而不是100?也许他/她想要解释,我想/@Quoi:答案中就有解释。如果构造函数意外地变成了一个方法(例如,通过在它前面粘贴
void
),那么它在构造过程中不会被调用——因此字段不会从基类将其设置为的值更改。void Shape1()-为什么要将构造函数更改为method?你真的读过答案吗?他的全部观点是,编写的代码是正确的……但这一微小的更改将导致代码以问题描述的方式中断。意思与原来的(问题前的)代码很可能是错误的。dude ans很好,我同意上面所描述的(+1)。但问题是为什么我得到的是10而不是100?也许他/她想要解释,我想/@Quoi:答案中就有解释。如果构造函数意外地变成了一个方法(例如,通过在它前面粘贴
void
),那么它在构造过程中不会被调用——因此字段不会改变基类设置的值。