package com.javarush.task.task13.task1305;
/*
Четыре ошибки
*/
public class Solution {
public static void main(String[] args) {
System.out.println(Dream.HOBBY.toString());
System.out.println(new Hobby().toString());
}
interface Desire {
}
interface Dream {
public static Hobby HOBBY = new Hobby();
}
static class Hobby implements Dream {
static int INDEX = 1;
@Override
public String toString() {
INDEX++;
return "" + INDEX;
}
}
}
Василь
30 уровень
Объясните пожалуйста, что делает данный код? Заранее благодарен.
Решен
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Anonymous #2372013
7 апреля 2021, 11:26решение
Смысл данного кода:
1. В интерфейсе Dream создаем объект типа Hobby, и берем значение переменной INDEX, тк. она статическая(будет работать в любом случае, она статическая для метода toString()
2. В переменную INDEX ничего не передаем.Статическая переменная INDEX имеет тип int и изменяет свое значение на единицу только при выполнении переопределенного метода toString()
3. Объект класса Hobby имеет доступ к статической переменной своего класса.
4. System.out.println(Dream.HOBBY.toString());// обращаемся к нашему переопределенному методу toString() через имя интерфейса Dream, его статическое поле HOBBY принимающее объект с переопределенным методом toString().
5. new Hobby().toString() -обращение через объект класса к переопределенному методу toString()
+5