为什么实现的方法不能是静态的?

时间:2015-12-10 02:13:27

标签: java

我正在创建一个程序,其中有各种类将美元兑换成各种不同的货币。例如,Yen的类,Euro的类等。每个类实现接口Converter,其中包含方法toDollar()fromDollar()

interface Convert {
    double fromDollar(double dollars);
    double toDollar(double otherCurrency);
    double dollar = 1.1; //each euro is 1.1 dollar
}

但是,我正在尝试将这些方法实现为static,因为我不需要该类的实例来转换美元。但是,当我尝试在接口中实现/覆盖这些方法时,我收到错误。我该怎么办呢?

public class toEuro implements Convert{

    private final double euro = .91;

    public double fromDollar(double dollars){
        return dollars * euro;
    }
    public double toDollar(double euro){
        return euro / dollar;
    }

    public static void main(String args[]){
        toEuro tE = new toEuro();
        System.out.println(toE.fromDollar(12833.23));
    }

}

我不想制作一个toEuro的实例!我应该能够静态访问它。

2 个答案:

答案 0 :(得分:2)

静态方法不是继承的,也不能由接口指定。也就是说,看起来toEuro不是一个类可能更有意义,但也许你应该写Convert toEuro = new MyConvert(.91) MyConvert只是一个带乘数的简单实现。< / p>

答案 1 :(得分:1)

OOP语言中接口的要点是允许您为接口的每个实例使用不同的实现。

如果所有方法都是静态的,那么首先拥有一个接口有什么意义呢?