java - 在抽象方法中返回一个值

标签 java abstract-class

我有一个名为 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/

相关文章:

java - 在 Java 的父类(super class)构造函数中调用抽象方法

java - 没有方法的抽象类

c++ - 抽象类可以在 C++11 中有构造函数和私有(private)成员吗

java - Observable.from(需要在另一个线程上完成的事情)

java - Eclipse:如何运行单个继承的 JUnit 测试方法

java - 使用 Hibernate @Column 注释而不使用 getter 和 setters 方法声明

java - 为什么我的 @PersistenceContext EntityManager 上抛出 NullPointerException?

java - 从抽象类扩展和打印

java - 使用MSSQL数据库类型别名,jooq 3.7.3将它们转换为正确的Java类型,但3.12.3将它们全部转换为java类型Object

java - 模拟线程和数据写入线程并行性