问题描述
public class car {
private String make;
private String model;
private int mileage;
private int year;
private float price;
public car(String make,String model,int mileage,int year,float price) {
this.make = make;
this.model = model;
this.mileage = mileage;
this.year = year;
this.price = price;
}
private String getMake() {
return make;
}
private String getModel() {
return model;
}
private int getMileage() {
return mileage;
}
private int getYear() {
return year;
}
private float getPrice() {
return price;
}
public String toString() {
return "Make:"+getMake()+"\nModel:"+getModel()+"\nMileage:"+getMileage()+"\nYear:"+getYear()+"\nPrice:"+getPrice();
}
class carTest {
private String[] carToStringArray(car c) {
String[] carInfo = {c.getMake(),c.getModel(),Integer.toString(c.getMileage()),Integer.toString(c.getYear()),Integer.toString(c.getPrice())};
return carInfo;
}
@Test
void verifyCarEqualityWithMakeModelYear() {
String[] expected = {"Toyota","RAV4","2018"};
car actual = new car("Honda","Altima",45000,2015,12000);
assertArrayEquals(expected,carToStringArray(actual));
}
}
我在carToStringArray()时出错。 c.getMake(),c.getModel(),c.getMileage(), c.getYear(),c.getPrice()。我收到一条错误消息,提示“来自类型car的getMake()方法不可见”,但在汽车课上却有此方法。我可以知道测试代码出了什么问题吗?
解决方法
如果要从类外部访问getter方法,则需要更改可见性。例如。到public
:
public String getMake() {
return make;
}
您可以在official java doc上详细了解它。
, getMake
,getModel
,getMileage
和其他此类方法-这些都称为吸气剂。在您的代码中,用于这些代码的访问修饰符为private
。这意味着这些吸气剂将无法在此类之外访问。
如果要从这些类之外调用这些方法,则必须提升访问修饰符。
通常我们会使用吸气剂public
-但这只是一个惯例,没有严格的规定要求您这样做。
阅读this文章以详细了解该主题。
,所有的吸气剂都是private
,所以不能在课外使用。假设public
和car
位于同一包中,则应将它们定义为carTest
,或至少具有默认可见性。