Ошибка incompatible types в task14.task1405;

Всем привет. помогите разобраться, понимаю что решение простое… но что то не доходит какое именно!
ошибка
"
incompatible types: com.javarush.task.task14.task1405.Solution.Food cannot be converted to com.javarush.task.task14.task1405.Solution.Selectable:
Solution.java, line: 10, column: 33
"
Вывод компилятора:
com/javarush/task/task14/task1405/Solution.java:10: error: incompatible types: com.javarush.task.task14.task1405.Solution.Food cannot be converted to com.javarush.task.task14.task1405.Solution.Selectable
Selectable selectable = new Food();

/*
Food
1. Реализовать интерфейс Selectable в классе Food.
2. Метод onSelect() должен выводить на экран фразу «food was selected«.
3. Подумай, какие методы можно вызвать для переменной food и какие для selectable.
4. В методе foodMethods вызови методы onSelect, eat, если это возможно.
5. В методе selectableMethods вызови методы onSelect, eat, если это возможно.
6. Явное приведение типов не использовать.
*/

public class Solution {
    public static void main(String[] args) {
        Food food = new Food();
        Selectable selectable = new Food();
        Food newFood = (Food) selectable;

        foodMethods(food);
        selectableMethods(selectable);
    }

    public static void foodMethods(Food food) {
       food.eat();
        food.onSelect();

    }

    public static void selectableMethods(Selectable selectable) {
        selectable.onSelect();

    }

    interface Selectable {
        void onSelect();
    }

    static class Food {
        public void onSelect() {
            System.out.println("food was selected");
        }
        public void eat() {
            System.out.println("food was eaten");
        }
    }
}

4 комментария

Fager
А зачем тебе переменная newFood? И ты не можешь сделать так Selectable selectable = new Food();
Возможно я ошибаюсь, но попробуй поменять на Selectable selectable = () -> {};
vampirit
Несовместимые типы: com.javarush.task.task14.task1405.Solution.Food нельзя преобразовать в com.javarush.task.task14.task1405.Solution.Selectable: Solution.java, строка: 10, столбец: 33

С чего вы взяли, что Food является Selectable?
Wintrou
Посмотри внимательно на первое условие задачи)
Alvisid
  • Alvisid
  • 0
  • Комментарий отредактирован 2017-05-15 17:04:23 пользователем Alvisid
Если вы написали в вашем классе метод с таким же названием как у метода в каком либо интерфейсе, то это ещё не значит, что вы реализовали интерфейс в вашем классе. про интерфейсы
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.