2015-12-10 5 views
-1

Я создаю программу, в которой существуют различные классы, которые конвертируют доллар в разные валюты. Например, класс для йены, класс для евро и т. Д. Каждый класс реализует интерфейс 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

Если вы хотите получить доступ к нему с помощью статических методов, какова точка вашего интерфейса 'Convert'? Как вы рассчитывали точно использовать методы? – sstan

+1

«Тем не менее, я получаю сообщение об ошибке» - И вы не думаете, что ошибка относится к вопросу? – John3136

+0

Зачем даже использовать интерфейс, если нет наследования. Вопрос не имеет смысла. –

ответ

2

Статические методы не наследуются и не могут быть указаны интерфейсами. Тем не менее, похоже, что для toEuro может быть больше не быть классом, но, возможно, вам стоит просто написать Convert toEuro = new MyConvert(.91), где MyConvert - это просто реализация с мультипликатором.

1

Точка интерфейса на языке ООП позволяет вам использовать различные реализации для каждого экземпляра интерфейса.

Если все методы должны быть статическими, то в чем смысл наличия интерфейса в первую очередь?

Смежные вопросы