我正在研究一个问题。我必须创建一个Boat
级,并且该船有一个序列号,每次制造一个新的object
时,该序列号增加1。我的测试通过了createNewSerialNumber()
方法,但是当我在Boat
对象上测试它时,我不断得到AssertionFailed, expecting <2> but was <1> or <7> but was <6>
意味着对象的序列号没有像它应该的那样增加一个的错误。
我已经检查了静态与非静态,并认为我做得正确。我甚至把它和其他类似的问题做了对比,还是一样的。有人能给点建议吗?
private int counter =0;
private static int serialNumber = 0;
public static int createNewSerialNumber()
{
serialNumber++;
return serialNumber;
}
public static int getSerialNumber()
{
return serialNumber;
}
public Boat(String newMake, Color newColor)
{
make = newMake;
color = newColor;
speed = 0;
counter++;
serialNumber = counter;
}
只有static
变量应该递增。counter
实例变量应该被赋值为增加后的值。
public Boat(String newMake, Color newColor)
{
make = newMake;
color = newColor;
speed = 0;
counter = createNewSerialNumber();
}
这样,第一个Boat
实例将有counter == 1
,第二个将有counter == 2
,以此类推。
您还应该将createNewSerialNumber
方法设置为private
,因为serialNumber
不应该从这个类外部递增。只有Boat
构造函数可以增加它。