The weather is fine

  • 3
  • Недоступна
Есть класс Today. В нем нужно реализовать интерфейс Weather и метод getWeatherType, объявленный в интерфейсе Weather. Подумайте, как связан параметр type с методом getWeatherType(). Поскорее приступайте!
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (135)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Максим Белоусов
Уровень 13, Москва, Россия
22 сентября, 17:28
Первая задача из нескольких файлов! Ура товарищи!
Игорь
Уровень 25, Москва , Россия
20 сентября, 09:46
Эта задачка заставила подумать)) Хотя казалось бы что может быть легче.... В данном примере interface WeatherType очень похож на enum
Marat Minnigaliev
Уровень 16
1 июля, 17:13
Среднее количество попыток для этой задачи 1.41. Похоже 99% решают на сайте, а не в IDE
Анисимова Юлия
Уровень 16, Киев
4 июня, 17:27
Это только я 15 минут искала вкладки?) Писать то нужно две строки кода... Галовное в задаче - найти где уже готовые интерфейсы)))
Денис Кочетов Technical Lead в СП62
7 июня, 19:14
Не только ты. ))
Антон Копанев Software Developer
18 марта, 19:02
Все файлы можно посмотреть в IDEA нажав на номер задания (task1317) в адресной строке
Эдуард Хазиев
Уровень 17
1 мая, 06:03
А я их с боку вижу ))
Maxim
Уровень 15, Санкт-Петербург, Россия
6 марта, 17:00
Это тот случай когда я "что-то нажал", а задача прошла проверку. Ни черта в итоге не понял, но было очень увлекательно.
Bill
Уровень 17
30 января, 12:29
Меня смутило, что я не могу увидеть этот самый интерфейс Weather, почему его нельзя было просто показать нам? Я вообще сначала его создал, а потом реализовывал, а оказывается он уже есть! Люди знайте - интерфейс Weather УЖЕ существует, остается тупо списать из требований подсказки
Pablo
Уровень 16
2 февраля, 11:35
В условии специально сказано: "Обрати внимание" Как ещё писать условие?) Мерцающие стрелки или видеоурок с инструктажем перед каждой задачей?))
🦔 Виктор веду Java Android канал в telegram @LetsCodeIt Expert
2 января, 04:40
Ого-го, у нас тут интерфейсы в отдельных файлах, с почином! : ) Поехали: 1. В класс сегодняшнего дня имплементируем интерфейс погоды, согласно ТЗ, тем самым мы обязуемся реализовать метод интерфейса внутри класса, что мы и делаем далее... 2. Пишем внутри класса метод, который возвращает строку, объявленную в классе переменной type:
публичный Строка получитьТипПогоды() {
  вернуть тип;
}
3. Таким образом, создавая новый экземпляр класса сегодня, мы передаём в его конструктор аргументом одну из констант интерфейса ТипПогоды, а внутри класса переопределённый метод кСтроке() возвращает дополненный формат строки в виде:
"Сегодня будет" + ЗНАЧЕНИЕ_КОНСТАНТЫ интерфейса ТипПогоды;
4. Чуть ниже ещё один Виктор по пунктам (какое совпадение ; ) более подробно описывает происходящее в данной задаче. 5. Всё получится!
Виктор
Уровень 24
24 декабря 2020, 11:31
Попытка объяснить, что происходит, дабы самому лучше понять) Итак. 1. Имеем интерфейс Weather с одним методом без реализации getWeatherType() который должен возвращать String. 2. Имеем интерфейс WeatherType в котором определены три строковые константы. Вспоминаем и запоминаем: интерфейс может определять константы и методы, которые могут иметь, а могут и не иметь реализации. 3. Далее. Класс Today имплементирует интерфейс Weather, следовательно, метод getWeatherType() из этого интерфейса должен быть реализован. Метод должен возвращать строку. Вопрос какую? 4. Смотрим на код и пытаемся понять, что делает программа. 5. В классе Today объявлена строковая переменная type. Этой переменной в конструкторе Today, присваивается значение, подаваемое на вход конструктора. Смотрим, где дальше используется наш объект Today? 6. В main, создаем экземпляр класса Today, которому (благодаря конструктору) мы обязаны подать на вход какую-то переменную типа String. Тут-то мы и подаем наши строковые константы из интерфейса WeatherType. 7. Далее все это добро выводим на экран. Но не сразу, а после финта ушами 8. После добавления констант в конструктор Today, продолжает выполняться код класса Today. В нем происходит переопределение метода toString() в котором и формируется итоговая строка, состоящая из текстовой части "Today it will be " и метода getWeatherType(), который возвращает нам какой-то String. Этим Stringом логично сделать значение переменной type, которая принимает одно из значений строковых констант. Не знаю, зачем такие повороты в реальной жизни, но здесь, видимо, это для натаскивания на пройденный материал. Кому интересно: замените строку в переопределении toString() на
return String.format("Today it will be %s", type);
все будет работать, как и работало.
Dmitry B
Уровень 18, DownTown
5 февраля, 16:37
да, такое ощущение, что левую руку засунули в правый карман, проделали там дыру, вытащили её снизу из штанов, а потом достали из левого кармана ключи
latkova
Уровень 15, Харьков
20 февраля, 10:35
класс! я сделала эту задачу сама, но местами интуитивно, ясно понимая только пункты 1-5 из вашего списка. прочитав ваш комментарий, сразу стало все ясно. Спасибо!
new Cat("Barsik")
Уровень 20, Сызрань, Россия
20 февраля, 15:03
Такие повороты встречаются на каждом шагу, если попробовать отойти в сторону самостоятельного написания программы которая делает что то полезное. Так как приходиться использовать готовые классы из библиотек, а там этих абстрактов и интерфейсов на каждом шагу и где что реализовано непонятно. Поэтому понять сейчас механизм и отличия абстрактных классов и интерфейсов крайне важно. Ну это конечно мое мнение🙂. Для примера String, вроде ничего сложного, но как он работает. Если в IDEA написать String а затем зажать Ctrl и кликнуть на написанный String, то можно увидеть что там у него под капотом, и попробовать разобраться в написанном. Например:
public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence,
               Constable, ConstantDesc {
implements java.io.Serializable хм интересно что это за интерфейс, также щелкаем, а там:
public interface Serializable {
}
и все, ну и куча описания а английском. Класс!!! И зачем String реализовывать пустой интерфейс. Становиться непонятно. Слева есть зелененький кружочек со стрелочкой вниз рядом с номером строки, нажимаем и видим что этот интерфейс реализован неимоверное количество раз😲. Значит он очень полезный этот интерфейс и одновременно пустой (сам еще точно не понимаю для чего и как он работает, знаю что он будет дальше в курсе). И таким образом можно бесконечно гулять по классам и интерфейсам и не видеть ни одной реализации методов, так как их реализация возложена на нас😑. Итог: нам тут сейчас дают базовые крупицы знаний без которых в реальной работе будет очень не просто. Ставим +/- ели помогло/не помогло.
Сергей Коваленко
Уровень 33, Краснодар, Россия
18 апреля, 08:13
По 8 пункту не совсем согласен. Код класса не выполняется, это шаблон для объектов. Порядок выполнения кода более менее можно понять взглянув на метода main. Метод toString() класса Today вызывается у нового объекта когда мы передаем этот объект в качестве параметра в метод println(). В самом же классе методы не выполняются по порядку как они есть. Они могут быть вызваны (а могут и нет) у объекта (экземпляра класса) при взаимодействии с ним.
Максим
Уровень 25, Санкт-Петербург, Россия
27 апреля, 15:05
При запуске программы я понял, что при передаче объекта вызвался метод toString(), но не пойму каким образом? Как println() понял, что нужно вызвать именно его?
Сергей Коваленко
Уровень 33, Краснодар, Россия
27 апреля, 18:29
При передаче в метод println() объекта типа Object он будет проверен на null, а после будет вызван метод toString(). В данном примере переопределен метод toString() класса Object.
mixk88
Уровень 17, Красноярск, Россия
15 декабря 2020, 17:15
Небольшой совет! по сути все что нужно сделать, это подумать что именно должен вернуть метод getWeatherType в классе Today после имплементации из тнтерфейса Weather, и пазл сложится, в самом условии даже обращают внимание на то что он должен вернуть.