Вот я создаю объект и создаю ссылку Man man = new Man(); После этого сохраняю ссылку на объект в woman.husband = man; Однако если я сделаю woman.husband = Man;(т.е. укажу Man с большой буквы) программа не будет работать. Также не понимаю, каким образом вызываются два нижних класса, которые описывают Woman и Man.
CilitBang
25 уровень
Сделал, но как сделал - не понял ;)
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #598481
16 мая 2019, 13:07решение
Почитай тут ответ.
Если коротко, то дела обстоят так. Разберем строчку Man man = new Man();
"Man man" создает переменную типа Man под названием man.
man - это просто название переменной. Можно назвать не man, а vasya например.
Это пустая переменная, просто коробочка, в которую можно что-то положить.
Раз переменная типа Man, значит в нее можно положить только объект класса Man, а точнее говоря ссылку на него.
Чтобы создать объект какого-то класса, нужно использовать ключевое слово new.
Почему ты пишешь не new Man, а new Man()? Дело в том, что Man() это не обращение к классу, а к конструктору этого класса. Это такой специальный вид методов, которые создают объекты этого класса.
У каждого класса есть конструктор. Это может быть свой конструктор, описанный тобой самим, либо, если не написать конструктора, будет использоваться конструктор по умолчанию. По умолчанию просто создается объект класса, не обладающий какими-то конкретными характеристиками. Единственное, что будет характеризовать созданный объект new Man() - это принадлежность к классу Man.
Что значит созданный объект? Это означает, что выполнены команды конструктора (в нашем случае их нет), и где-то в памяти компьютера выделено место для хранения этого объекта. Если бы мы не планировали в дальнейшем обращаться к этому объекту, нам не обязательно было бы сохранять ссылку на него. Другими словами, если бы нашей целью было только выполнить команды, написанные в конструкторе, а потом объект можно было бы выбросить, то можно было бы написать просто new Man() вместо Man man = new Man().
+13
hidden #598481
16 мая 2019, 13:09
Что же произошло от этой команды в совокупности: Man man = new Man().
1) Создали переменную man, которая может хранить объекты класса Man.
2) В памяти компьютера создали новый объект класса Man при помощи команды new Man().
3) При помощи оператора "=" сохранили ссылку на созданный объект в имеющуюся переменную.
Теперь у тебя в переменной man хранится ссылка на сотворенного тобой человечка.
Поэтому если ты хочешь к нему обратиться, ты должен обращаться именно к переменной man.
Например, когда ты пишешь woman.husband = man, то ты в переменную woman.husband (это тоже переменная класса Man!) записываешь содержимое переменной man, т.е. ссылку на тот же самый объект.
+7
CilitBang QA в КЕФИР!
16 мая 2019, 13:27
Большое спасибо. Суть понял благодаря твоим ответам по ссылке в первом сообщении. Еще раз спасибо.
0