Исправление ошибок

  • 7
  • Недоступна
Корректируем код, который работает совсем не так, как мы хотим, а то и вовсе не работает. Вам предстоит переделать наследование в классах и интерфейсах таким образом, чтобы программа компилировалась и продолжала делать то же самое. При этом класс Hobbie должен наследоваться от интерфейсов Desire и Dream.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (31)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Ростислав19 уровень, Киев
29 января, 20:22
В условии задачи: ... 2. Класс Hobbie должен наследоваться от интерфейсов Desire, Dream. Это так задумано? или опечатка? В коде везде Hobby и HOBBY Я смотрю в комментах люди меняют на Hobbie ))
Vilgelm Legus20 уровень
11 января, 21:21
Если модифицировать toString c: INDEX++; return "" + INDEX; на: return "" + INDEX++; То валидатор напишет, что Index в методе toString не инкрементируется, wtf?
Слава Кутаев25 уровень, Екатеринбург
14 ноября 2018, 04:08
Подскажите кто разобрался - в чем смысл создания интерфейса, который создает тот же объект, который его имплементирует ? Какое отличие от конструктора внутри самого объекта?
argusgun35 уровень, Москва
20 августа 2018, 14:01
ятоже хотел сначала сделать интерфейс один родитель и дочернюю реализовать но одумался из за требования задачи
Александр Бойко29 уровень, Казань
19 июня 2018, 19:37
Занятно: наследую один интерфейс от другого и имплиментирую интерфейс-наследник. Получается, так я автоматически имплиментирую интерфейс родитель, и указывать это не надо, но валидатор иного мнения. Пришлось имплиментировать оба интерфейса
Vitaly Khan35 уровень
2 мая 2018, 15:30
тот самый случай, когда задачу решить совсем нетрудно, при этом, вообще, не понимая кода... хоть бы пояснили, что это за конструкции такие... нетривиальные совсем... стоит ли вникать, почему именно так организованно? может, это какой часто используемый паттерн?... много вопросов, и удовлетворения от решения мало.
Андрей23 уровень, Москва
15 мая 2018, 18:06
Желаю чтобы все нытики и ленивые жопы побыстрее забили на этот курс и отвалили. Ибо такого количества нытья и воплей я не выдержу на своей будущей работе :)
Махъ17 уровень, Москва
28 июня 2018, 16:58
надеюсь так и будет, не выдержишь и пойдешь куда-нибудь еще курсы осваивать
UnNameD16 уровень, Москва
12 декабря 2018, 23:25
Например кулинарные, хотя люди, желающие разобраться в проблеме и там будут постоянно задавать вопросы. Поэтому наверно лучше сразу на курсы охраников в пятерочку.
Grimax16 уровень, Санкт-Петербург
29 января, 12:30
Конструктив на конструктиве прям). Если вы сами разобрались помогите другим это вам и на будущей работе поможет ведь вам тоже наверняка понадобится помощь.
Dinar19 уровень, Уфа
16 марта 2018, 13:51
и задача и пример )
Айдар Загретдинов18 уровень, Москва
1 января 2018, 15:04
решить то решил. Но вот этот момент может кто подскажет..В коде ниже, - строка "System.out.println(new Hobbie().INDEX)" . Что это значит? Я ее понимаю как "создаем объект типа Hobbie и передаем его переменной INDEX". Так ли это?
public static void main(String[] args) throws Exception {
        System.out.println(Dream.HOBBIE.toString());
        System.out.println(new Hobbie().INDEX);
    }

    interface Desire
    {
    }

    interface Dream extends Desire
    {
        public static Hobbie HOBBIE = new Hobbie();
    }

    static class Hobbie implements Desire, Dream
    {
        static int INDEX = 1;

        @Override
        public String toString() {
            INDEX++;
            return "" + INDEX;
        }
    }
Slavik20 уровень, Санкт-Петербург
3 января 2018, 14:55
мы создаем объект типа Hobbie, и берем значение переменной IDNEX, несмотря на то, что она статическая, так все равно будет работать. Она статическая для метода toString()
Alexander Sudakevich15 уровень
4 февраля, 13:26
нет, ничего не передаем. Статическая переменная INDEX имеет тип int и изменяет свое значение на единицу только когда выполняется переопределенный метод toString(). Объект класса Hobbie имеет доступ к статической переменной своего класса и запись new Hobbie().INDEX лишь позволяет нам обратиться к этой статической переменной класса с целю узнать ее текущее значение и вывести его в консоль. В данном задании к переменной INDEX можно обратиться и через имя класса: Hobbie.INDEX System.out.println(new Hobbie().INDEX); //наш переопределенный метод toString() не вызывается. Мы просто выводим в консоль текущее значение INDEX System.out.println(new Hobbie());тут сработает наш переопределенный метод toString() в теле которого мы увеличиваем на единицу статическую (принадлежащую только классу, а не объекту) переменную INDEX и затем ее новое значение выводится в консоль System.out.println(Dream.HOBBIE.toString());// тут мы прямым текстом обращаемся к нашему переопределенному методу toString() через имя интерфейса Dream, его стат. поле HOBBIE принимающее объект с переопределенным методом toString(). 1 System.out.println(Hobby.INDEX); тек значение, обращаемся через имя класса 2 System.out.println(Dream.HOBBY.toString()); +1 обр. к переопред. методу объекта. 3 System.out.println(Dream.HOBBY); +1 печать объекта 3 System.out.println(new Hobby().INDEX); тек значение, обращаемся через созд. объект 4 System.out.println(new Hobby()); +1 печать объекта 4 System.out.println(Hobby.INDEX); тек значение При печати объекта срабатывает наш переопределенный метод, который увеличивает на единицу значение статической переменной класса INDEX.
Gennadiy16 уровень, Одесса
10 февраля, 10:08
Спасибо за разбор. Четко, ясно и понятно.
Аслан31 уровень, Москва
11 октября 2017, 20:57
public static void main(String[] args) throws Exception {
        System.out.println(Dream.HOBBIE.toString());
        System.out.println(new Hobbie().INDEX);
    }

    interface Desire {
    }

    interface Dream  {
        public static Hobbie HOBBIE = new Hobbie();
    }

    static class Hobbie implements Desire, Dream {
        static int INDEX = 1;

        @Override
        public String toString() {
            INDEX++;
            return "" + INDEX;
        }
    }
Аслан31 уровень, Москва
11 октября 2017, 20:56
Исправление ошибок
1. Переделай наследование в классах и интерфейсах так, чтобы программа компилировалась и продолжала делать то же самое.
2. Класс Hobbie должен наследоваться от интерфейсов Desire, Dream.
а как класс может наследоваться ОТ ИНТЕРФЕЙСА? ну, если допустить что как-то может, то как он это делает сразу от ДВУХ таковых? а может стоит немного больше времени уделять продумыванию заданий?