Спасибо за урок. Очень грамотно, спокойно. Понравился очень. Однозначно рекомендуется к просмотру. С Вашей помощью тема стала доступнее для понимания при прочтении текстового материала.
Очень жаль, что я не смог объяснить проще( К сожалению видеоурок не лекция, тут не переспросишь сразу, не уточнишь. Я все более и более склоняюсь к мысли о вебинарах, чтоб можно было оперативно взаимодействовать.
Не думаю, что дело в вас, вы объясняете всё отлично, и уроки ваши одни из моих любимых (параллельно смотрю записи лекций из Oracle Academy). Просто тема сложнее предыдущих. А мысль про вебинары мне нравится, и думаю не только мне. Думаю многие с удовольствием будут их посещать)
Недавно проходил эту тему у Эванса/Флэнагана, там анонимный класс определён как "локальный класс без имени", действительно, какое имя у анонимного класса?) Объявление анонимного класса - это выражение(expression), которое может быть включено в как часть большего выражения, например такого, как вызов метода. Может быть немного криво перевёл, мог неверно использовать термин выражение.. Может приведёте другой пример использования анонимного класса? Если интересно я у Фленагана исходники скопирую
Зачем в конце урока мы добавляем в список операций операцию, которая ничего не делает с полями класса Account? Это вообще вводит в ступор и становиться не понятно как к операциям потом обратиться, чтобы изменить эти поля. Ведь просто написав account.operations.add(operation) ничего с переменной money не произойдет. Нужно ведь как-то обращаться к полю operations. По-моему лучше написать вместо account.operations.add(operation) - account.money-=operation.amount.
Это нужно для того, чтобы подобно тому как это происходит в реальных банках отслеживать список операций над счетом. А результирующая сумма на счету должна равняться начальному значению плюс сумма значений всех операций.
@@BoostBrainCourse Вопрос был в другом, как вызов метода account.operations.add(operation) повлияет на другие поля класса Account? Если написать account.money-=operation.amount, то поле money изменит свое значение. Но если мы просто напишем account.operations.add(operation), то никаких значимых для нас измений не произойдет, значение у поля money будет иметь то значение, которое мы передали конструктору.
В этом уроке, после определения двух методов анонимного класса getDate( ) и getAmount( ) вместо account.money += amount и .....-= amount ,методы класса Bank перестали работать. Или я что то не понимаю.
Нашёл причину. Нужно было в обоих методах класса Bank в конце дописать строчку account.money -=operation.getAmount(); и тогда экземпляр анонимного класса AccountOperation возвращает значение метода getAmount( ).
Добрый день. Вопрос - почему класс Account объявлен как static? Разве нельзя было объявить его как обычный? В каких случаях нужно использовать статические вложенные классы?
Это было сделано для иллюстрации именно статических вложенных классов. Немного дальше по ходу урока класс Account сделан нестатическим и демонстрируется как раз создание его в привязке к экземпляру класса-оболочки.
То, что дальше вложенный класс был сделан нестатическим, я видел. Мой вопрос больше теоретический, в каких случаях требуется использовать статические вложенные классы, а в каких нет. Просто, не могу придумать пример, когда есть разница в использовании
Обычно это используется когда нужен доступ к приватным полям класса-оболочки. Реальное применение может быть, например, в паттерне "Строитель" - habrahabr.ru/post/86252/
Хммм... Вы правы, обычно геттеры и сеттеры просто возвращают. Но в данном случае смысл метода в снятии денег со счета. Наверное правильнее было бы назвать метод withdrawMoney, но английский я знаю хуже Java)
когда пишу для getMoney строка account.id -= amount; у меня выдаёт ошибку bad operand types for binary operator ”-”... странно что у автора не выдаёт :/