Задача task14.task1405 (level14.lesson04.task03)

Добрый вечер, джаварашевцы и джаварашатессы!

package com.javarush.task.task14.task1405;

/* 
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
        Food.eat();
        Food.onSelect();
    }

    public static void selectableMethods(Selectable selectable) {
        //тут добавьте вызов методов для переменной selectable
        Food.onSelect();
    }

    interface Selectable {
        static void onSelect()
        {

        }
    }

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

        }
    }
}



Валидатор находит следующие ошибки:
ОШИБКА В методе foodMethods должны вызываться методы объекта типа Food.
ОШИБКА В методе selectableMethods должны вызываться методы доступные
у любого объекта реализующего интерфейс Selectable.
ОШИБКА Метод onSelect() в классе Food должен выводить на экран фразу «food was selected».

Я подозреваю, что у меня метод onSelect не переопределяется в классе Food, так как в интерфейсе Selectable он имеет тело. Если убираю тело, то он не может быть static. Если убираю static, то он не вызывается из класса Food
Если в классе Food у метода onSelect убираю static, то он не может вызываться из статических методов foodMethods и selectableMethods.
В чем моя ошибка?

С уважением,
Зеленая лягушка

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

sibiriak
  • sibiriak
  • 0
  • Комментарий отредактирован 2017-03-20 23:19:40 пользователем sibiriak
создай конструктор класса Food.
zzzz
1. Из-за чего все остальные проблемы: Почему у вас в классе Food все методы стали статическими?

//тут добавьте вызов методов для переменной food
        Food.eat();
        Food.onSelect();

Подумайте, у чего вы вызываете методы?

//тут добавьте вызов методов для переменной selectable
        Food.onSelect();

Аналогичная проблема, просят же ясно у кого нужно вызвать метод
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.