如何使用String方法打印对象值

时间:2014-04-14 11:07:10

标签: java string abstract-class

我有一个像这样的抽象类

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()没有工作,我有点无能为力。因为我们不会每次都返回相同的对象,所以我们不必使用超类吗?

2 个答案:

答案 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()方法,因此您不需要明确地使用该方法的超级实现。