我有一个像这样的抽象类
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 abstract Temperature toKelvin();
}
然后我有扩展此Temperature类的类,例如:
public class Celsius extends Temperature
{
public Celsius(float t)
{
super(t);
}
public String toString()
{
return "";
}
@Override
public Temperature toCelsius() {
// TODO Auto-generated method stub
return this;
}
public Temperature toKelvin(){
return new Kelvin(this.getValue() + 273);
}
@Override
public Temperature toFahrenheit() {
// TODO Auto-generated method stub
return new Fahrenheit(this.getValue() * 9 / 5 +32);
}
}
main方法创建Celcius的对象
Temperature inputTemp = null, outputTemp = null;
inputTemp = new Celsius(temp_val);
outputTemp = inputTemp.toCelsius();
然后通过调用此方法打印对象
System.out.println("\n The converted temperature is " + outputTemp.toString() +"\n\n");
}
为了打印所需的值,我需要在toString方法中添加什么? this.super.getValue()没有工作,我有点无能为力。因为我们不会每次都返回相同的对象,所以我们不必使用超类吗?
答案 0 :(得分:1)
如果你使用它就足够了:
public String toString()
{
return Float.toString(this.getValue());
}
答案 1 :(得分:0)
this.super
语法无效。 super
不是this
的字段。它是一个关键字,允许调用方法的超类实现,而不是从当前类调用重写的实现。你只需要
return Float.toString(this.getValue());
或
return Float.toString(getValue());
甚至
return Float.toString(super.getValue());
但是使用super.getValue()
是没用的,因为子类不会覆盖基本getValue()
方法,因此您不需要明确地使用该方法的超级实现。