在测试用例/不同类中调用构造函数时重写Java类值

在测试用例/不同类中调用构造函数时重写Java类值,java,constructor,Java,Constructor,我有这样的测试用例 TestSquare.java 因此在最后一行中,s.getMidPoint()不等于点(101201),而是被215315覆盖。这是我的构造函数代码和get方法 Square.java 因此,s.getMidPoint()不应替换为Point对象。我做错了什么 这两个代码属于不同的类。因此,Square.java中没有main方法。如果您不希望其他类能够编辑Square的中间,请返回一个新点: public Point getMidPoint() { return

我有这样的测试用例

TestSquare.java

因此在最后一行中,
s.getMidPoint()
不等于
点(101201)
,而是被
215315
覆盖。这是我的构造函数代码和get方法

Square.java

因此,
s.getMidPoint()
不应替换为
Point
对象。我做错了什么


这两个代码属于不同的类。因此,
Square.java
中没有main方法。如果您不希望其他类能够编辑
Square
的中间,请返回一个新点:

public Point getMidPoint() {
    return new Point(newMidPoint);
}

然后,您的测试将以绿色运行。

如果我按照您的问题进行操作,您的问题是您正在修改从
正方形
中提取的
的实例,方法是指定其坐标。如果要安全地获取
中点
字段,需要执行一些复制,而不仅仅是传递对对象字段的引用。是的,问题在于
更改
中点
的值。也就是说,我将如何进行
复制
。你能再给我一些提示吗?谢谢,啊,太棒了。我不知道。非常感谢你。
public Square(Point newP, int width, int height, Shift newS) {
    this.newMidPoint = newP;
    this.newWidth = width;
    this.newHeight = height;
    this.newShift= newS;
}
public Point getMidPoint() {
    return newMidPoint;
}
public Point getMidPoint() {
    return new Point(newMidPoint);
}