Подскажите, в итоге не пойму когда нужно писать в конструкторе this.x = x, а когда не нужно (как во второй задаче лекции).
2b2b2b2b
19 уровень
По поводу this
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
MasterMarg
16 апреля 2021, 07:27
/* Комментарий удален */
0
Flexo Bending Unit #3370318
16 апреля 2021, 08:10
какие ваши источники?
что значит "изменит поле не у экземпляра, а у всего класса" - это как, он что, сделает его static?
0
Nick
16 апреля 2021, 08:16
Полностью согласен! "Что за чушь!" Это именно то что вы написали. 😁
-2
Flexo Bending Unit #3370318
16 апреля 2021, 06:48полезный
мне недоступно условие задачи, но попробую ответить
this указывает на данный (создаваемый вот сейчас в этом конструкторе) экземпляр класса.
при этом, указывать на этот экземпляр класса возникает необходимость тогда и только тогда, когда в методе переменные аргументов обозначены теми же именами, что и поля класса, иначе компилятор интерпретирует переменную как локальную (в переделах конструктора) аргументную.
Вот такой вам пример:
если тут записать вместо this.a = a просто a = a, то поле 'a' класса не будет проинициализировано таким конструктором.
а чтобы не использовать this, достаточно просто сделать имя передаваемой переменной отличным от имени поля класса, как это сделано в примере для поля 'b'. но вообще говоря, это не очень удобно, так как снижает доступность при восприятии кода у читающего. +8
Nick
16 апреля 2021, 06:41полезный
Если имя переменной класса (this.x) совпадает с именем параметра конструктора (просто x), т.е. там где одновременно используешь 2 разные переменные с одинаковым именем, просто что бы их различать.
+1