Задачу решил, но хочу понять логику того, как это работает.
Я правильно понимаю, что объект man ссылается на класс Man?
То есть в случае создание команды типа System.out.println (man); - я увижу параметры которые были присвоены (возраст и вес)??
А команда man.wife ссылается на объект woman, что в свою очередь как бы объединяет два класса, и в случае если дописать код, уточнить
имена мужчины и женщины, то сама программа будет обеднять мужчин и женщин, а также учитывать параметры (возраст и вес)??
Код я думаю скидывать не обязательно, задание у меня решено...
Alexey Davydov
16 уровень
Скажите правильно ли я понял?!
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #598481
18 марта 2019, 09:34
Почитай тут, думаю, станет понятнее:
https://javarush.com/help/15788#discussion
0
Юрий Волошин
17 марта 2019, 18:27
без кода можно ответить только догадками...
например man.wife - вероятнее всего это обращение к полю wife объекта man...
0
Alexey Davydov
17 марта 2019, 19:20
Юрия, я хотел узнать на счет этого кода
public class Solution {
public static void main(String[] args) {
Man man = new Man();
Woman woman = new Woman();
man.wife = woman;
woman.husband = man;
}
public static class Man {
public int age;
public int height;
public Woman wife;
}
public static class Woman {
public int age;
public int height;
public Man husband;
}
}
0
Юрий Волошин
18 марта 2019, 09:01
Ну смотрите: классы Man и Woman очень похожи, они имеют по 3 поля: 2 поля (примитивного) типа int способные хранить целочисленные значения, а третье поле ссылочного типа, и может хранить ссылку на объект определенного (указанного) типа.
Теперь строкой Man man = new Man(); вы создаете объект типа Man и сохраняете ссылку на него в переменную man, поля созданного вами объекта принимают значения: age = 0, height = 0, wife = null, так как поля пронициализированы значениями по умолчанию, для ссылочных типов (в данном случае wife) это всегда null, так как они пока не хранят ссылок ни на какие объекты, а для int-ов это 0. то же самое происходит и со следующей строкой Woman woman = new Woman().
далее man.wife = woman; - значит полю wife объекта man присвоить ссылку на объект woman, то есть теперь вы присваиваете полю wife объекта man ссылку на объект woman, и теперь она равна не null, то есть не пустая, а ссылается на конкретный объект. то же самое и со следующей строчкой.
вызов System.out.println (man), вернет вам не параметры, он выведет в консоль что то вроде "Solution$Man@75412c2f" - ссылку на место хранения объекта, а вот что бы увидеть параметры например возраст нужно запросить System.out.println (man.age). man.wife - тоже вернет ссылку на место в памяти где хранится объект wife, а вот man.wife.age - вернет возраст жены. грубо говоря System.out.println (man) = "Эй мужик!" и в ответ получаете "Я тут: Solution$Man@75412c2f", System.out.println (man.age) = "Эй мужик сколько тебе лет?" и получите "0", System.out.println (man.wife.age) = "Эй мужик сколько лет твоей жене?" - "0", System.out.println (man.wife.man.wife.age) = "Эй мужик, сколько лет жене мужа твоей жены?"... и так далее...
если возраст 0 вам не нравится его можно изменить строкой man.age = 30; что значит полю age объекта man присвоить значение 30.
+3