@anya_hacker

Как инициализировать поля из интерфейса?

Реализую пример принципа инверсии зависимостей.
Создаю интерфейс с полями id=0 и name=null (но в Java они становятся константами).
В классе, который реализует этот интерфейс, я инициализирую эти поля в конструкторе значениями.
Но они в дальнейшем всё равно отображаются как id=0 и name=null
interface IFrom {
    int id = 0;
    String name = null;
}

class ModelForm implements IFrom {
    int id;
    String name;

    public ModelForm(int id, String name) {
        this.id = id;
        this.name = name;
    }
}

class OtherModelForm implements IFrom {
    int id;
    String name;

    public OtherModelForm(int id, String name) {
        this.id = id;
        this.name = name;
    }
}

class MySQL {
    void save(IFrom form) {
        System.out.println("Saved form with id = " + form.id + " and name = " + form.name);
        // Saved form with id = 0 and name = null
    }
}

class WebFrameWork {
    void save(IFrom form) {
        MySQL db = new MySQL();
        db.save(form);
    }
}


public class DIP {
    public static void main(String[] args) {
        ModelForm modelForm = new ModelForm(1, "firstForm_name");
        OtherModelForm otherModelForm = new OtherModelForm(5, "secondForm_name");

        WebFrameWork webFrameWork = new WebFrameWork();

        webFrameWork.save(modelForm);
        webFrameWork.save(otherModelForm);
    }
}

Как можно эти поля инициализировать?
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
xez
@xez Куратор тега Java
TL Junior Roo
1. Эти приставки 'I' для интерфейса - моветон.
2. Интерфейс описывает поведение. У вас никакого поведения не описано, интерфейс, следовательно, вам не подходит.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы