Создали объект woman
Woman woman = new Woman();
я так понимаю под данный объект выделилась память(виртуальная или физическая) и в переменную внесена ссылка на данный объект.
После чего в данный объект мы внесли переменную что муж данной жены это мужчина
woman.husband=man; и эти данные были внесены в память объекта
для чего мы ниже указываем повторно объект Woman c переменной, что мужчина ее муж (public Man husband;)?
public static class Woman {
public int age;
public int height;
public Man husband;
}
для того чтоб эта переменная была видима с любого класса? ТО есть если нужна видимость только в текущем классе достаточно верхней переменной, а если нужен доступ то достаточно нижней переменной? не обязательно их писать дважды в дальнейших подобных программах? тут дважды написано в виде примера?
igor Konkov
4 уровень
выделенная память для объектов
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Антон Борисенко
12 июля 2019, 05:39решение
public static class Woman {
public int age;
public int height;
public Man husband;
}
Это описание структуры класса Woman - той самой выделенной области памяти (виртуальной или физической), ссылка на котороую внесена в переменную woman.
Причем поле husband так же содержит ссылку на другую выделенную область памяти.
При создании экземпляра класса Woman / Woman woman = new Woman() / все ссылочные поля инициализируются сзачением null, если иное не прописано с статическом блоке или конструкторе класса.
Таким образом:
public static class Woman {
public int age;
public int height;
public Man husband;
}
Это ОПИСАНИЕ КЛАССА, а
Woman woman = new Woman();
woman.husband=man;
Это ИСПОЛЬЗОВАНИЕ ОБЪЕКТА (экземпляра класса)
+2
Wladyslaw Java Developer Master
12 июля 2019, 05:33решение
Тут ты просто объявляешь поле типа Man в классе Woman
Тут, ты конкретному объекту класса Woman woman в поле husband копируешь ссылку на конкретный объект класса Man man
А память ты до этого выделил, там где объекты создавал с помощью new +2
igor Konkov
12 июля 2019, 05:47
По моему я понял: в классе я просто ОБЪЯВЛЯЮ мужчину мужем (public Man husband;), а выше закрепляю за определенной женщиной данного мужа (woman.husband=man;) так же я могу сделать мужчину двоеженцем к примеру (woman1.husband=man;). Правильно?
0
Wladyslaw Java Developer Master
12 июля 2019, 06:26
Вроде как да. В классе ты объявляешь ссылочную переменную определенного типа.
А потом сохраняешь в эту переменную определенного объекта, созданного на основании этого класса ссылку на другой определенный объект
Да, на один объект могут ссылаться несколько объектов
0
stefan
25 июля 2019, 22:15
Ты не объявляешь мужчину мужем, если продолжать в текущей аналогии, ты объявляешь, что у женщины может быть муж, то есть может быть переменная определенного типа у объекта Woman.
А когда ты приводишь описание класса, ты говоришь, что в мире, принципиально, попадаются такие объекты, как женщина, которые характеризуются определенными параметрами (переменными).
А для конкретной женщины ты уже определяешь конкретные параметры, при чем, в данном случае, вполне справедливо, что у конкретной женщины переменная муж может быть null, то есть нет его)
+1