要点:(从帖子底部移走)
您会想了解测试之间的区别ObjA == ObjB
, ObjA.equals(ObjB)
, and ObjA instanceof ClassB
.
这个方法
public double getCurrentStation()
{
if (selectedRadio == radioAM)
{
return radioAM.getCurrentStaion();
}
else if (selectedRadio == radioFM)
{
return radioFM.getCurrentStaion();
}
return 0.0;
}
可能不会像你期望的那样工作。如果您实施double getCurrentStation()
Radio 基类中的方法(您所做的),您可以执行以下操作:
public double getCurrentStation()
{
return selectedRadio.getCurrentStation();
}
但这可能有点过分了,所以你应该更换getCurrentStation()
来电AutoRadioSystem
with selectedRadio.getCurrentStation()
.
相似地,
public void selectRadio()
{
if (selectedRadio.equals(radioAM))
selectedRadio = radioFM;
}
不会像你期望的那样工作。你可能想要类似的东西
public void selectRadio()
{
if (selectedRadio. instanceOf AMRadio))
selectedRadio = new FMRadio();
}
Also,
if (o == null)
return false;
if (! (o instanceof AutoRadioSystem))
return false;
可以简化为
if (! (o instanceof AutoRadioSystem))
return false;
Since o instanceof SomeClass
回报false
if o
is null
.
还有其他问题。