我有一个名为 temperature 的抽象类,具有以下内容
public abstract class Temperature
{
private float value;
public Temperature(float v)
{
value = v;
}
public final float getValue()
{
return value;
}
public abstract Temperature toCelsius();
public abstract Temperature toFahrenheit();
}
然后我有一个从温度延伸出来的摄氏度和华氏度类,但是为了空间的缘故,我将显示摄氏度
public class Celsius extends Temperature
{
public Celsius(float t)
{
super(t);
}
public String toString()
{
// TODO: Complete this method
return "";
}
@Override
public Temperature toCelsius() {
// TODO Auto-generated method stub
return null;
}
@Override
public Temperature toFahrenheit() {
// TODO Auto-generated method stub
return null;
}
}
所以我的主程序如下创建一个新的 celcius 对象
Temperature inputTemp = null , outputTemp = null;
inputTemp = new Celsius(temp_val);
然后调用 toFahrenheit 方法将 outputTemp 分配给 inputemp
outputTemp = inputTemp.toFahrenheit();
然后将结果答案放入 toString 方法中
outputTemp.toString
据我所知,Celcius
构造函数使用Temperature
构造函数来存储传入的temp_val
参数。但是,让我感到困惑的是,如何使用 inputTemp.toFahrenheit
方法将 Celcius
的转换值返回到 Fahrenheit
?
我尝试返回 this.getValue() * 9/5 + 32
,但 eclipse 提示说因为 getValue()
是一个 float
方法,我要么必须将 Overriding 方法更改为 float
,或者将 getValue()
更改为 Temperature
,但两者都不起作用....
最佳答案
在 Celsius
中,toCelsuis
应该返回 this
因为 Temperature
已经是摄氏度了。 toFahrenheit
方法应该返回一个新的 Fahrenheit
实例:
@Override
public Temperature toCelsius() {
return this;
}
@Override
public Temperature toFahrenheit() {
return new Fahrenheit(this.getValue() * 9D / 5D + 32D);
}
Fahrenheit
类则相反。
关于java - 在抽象方法中返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23056632/