【发布时间】:2014-04-14 09:33:31
【问题描述】:
我有一个名为温度的抽象类
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);
然后将 outputTemp 分配给调用 toFahrenheit 方法的 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,但两者都不起作用....
【问题讨论】:
-
你不能把这个返回类型加倍吗?public abstract Temperature toCelsius();公共抽象温度 toFahrenheit();
-
目前您并没有真正实现这些方法。他们只是返回
null。 -
@SanjayRajjadi 不,您不能更改抽象方法
标签: java abstract-class