Задачу решил, но логику решения никак не могу понять. Помогите разобраться.
1. Man man = new Man();
Здесь переменной man класса Man присвоили ссылку на класс Man. Другими словами присвоили переменной man целый класс. Я прав? Т.е. объект - это переменная, хранящая ссылку на класс?
Что это за класс переменной Man? Это Man обязательно должно совпадать с именем класса, на которой присваиваем ссылку переменной?
2. woman.husband = man
Что вообще означает эта запись?
3. Что такое поля и экземпляры?
В комментария и разделе "Помощь" встречал упоминания полей и экземпляров. Но что это так и осталось для меня не понятным.
Сергей
4 уровень
Помогите разобраться в понятиях.
Решен
Комментарии (14)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Alex Krasikov
9 ноября 2020, 16:40
Вообще ничего неясно зря я это затеял 😀😀😀😀
0
Alikhan
6 ноября 2020, 10:47
Переменные метода вроде и есть "Экземпляры" из книги head first java вычитал, если не ошибаюсь.
0
Alexandr
28 января 2020, 10:06
Спасибо все понятно!
0
Алексей
24 января 2020, 10:59
Огромное спасибо за ссылку
0
hidden #598481
31 января 2019, 14:58
Посмотри видео по ссылке, может понятней станет.
Привязал ссылку ко времени, откуда смотреть по теме твоего вопроса.
Вообще советую к просмотру весь плейлист.
https://youtu.be/uPK2FVz6qUs?list=PLAma_mKffTOSUkXp26rgdnC0PicnmnDak&t=251
+16
Сергей
1 февраля 2019, 08:00
vk, спасибо за ссылку. Многое прояснилось.
Однако в задаче по прежнему остались белые пятна.
Мы пишем: woman.husband = man. Но в классе Woman нет переменной husband. Есть Man husband. Почему мы через точку пишем только husband?
+2
hidden #598481
1 февраля 2019, 08:34решение
Когда ты объявил поля, ты тем самым сказал, что у каждого объекта класса Woman может быть свои значения возраста, роста и мужа. Можно представить, что каждой женщине ты даешь анкету с тремя этими полями, и она может их заполнить.
У мужчин тоже есть свои поля, но сейчас это неважно.
+59
Сергей
1 февраля 2019, 08:57
Меня сбивает с толку обилие классов в твоём ответе.
public Man husband; // поле husband класса Man
Здесь Man - это тип переменной? Есть int, есть String, а здесь Man. Или всё же имелся ввиду class Man?
0
hidden #598481
1 февраля 2019, 09:35решение
Man - это тип переменной.
Чтобы можно было создать переменную типа Man, где-то должен быть создан класс Man.
Ты можешь использовать классы int и String, потому что они входят в стандартные библиотеки Java. Класс Man - это пользовательский класс, который ты описываешь сам, и после этого ты можешь создавать объекты этого класса.
Когда я говорю "переменная типа такого-то" это значит, что существует такой класс, и в этой переменной будет лежать объект этого класса.
Тебе нужно больше почитать про объектно-ориентированное программирование. Суть ООП в том, что у тебя все является объектом. Ты пишешь классы, которые по сути представляют собой описание шаблона взаимодействия этих объектов: в классах ты описываешь характеристики объектов (поля, которые в свою очередь будут хранить другие объекты) и возможное поведение объектов (методы).
То есть когда у тебя написано
это не значит, что ты что-то создал. Это ты описываешь сам класс, то есть что будут представлять собой объекты этого класса. Сами по себе классы не взаимодействуют без методов, по сути классы - это набор правил, по которому могут взаимодействовать их объекты. Поэтому в программе должен быть по крайней мере один метод - метод main.
И вот когда внутри какого-то метода ты пишешь
ты уже начинаешь создавать объекты, в данном случае 4 объекта - один класса int, один класса String, один класса Woman, один класса Man и сохраняешь их в соответствующие переменные n, s, alice, bob.
Пока что эти переменные никак не взаимосвязаны, но поскольку в описании класса Woman в нашей задаче написано, что у объекта этого класса может храниться объект Man в поле husband, ты можешь обратиться к этому полю: Таким образом ты обозначил, что в поле husband переменной alice будет храниться ссылка на объект bob. +67
Сергей
1 февраля 2019, 11:44
Огромное спасибо за подробные ответы.
0
Юрий
10 июня 2019, 05:30
vk, спасибо за ссылку. Очень помогает разобрать задачу.
0
Павел Петров
16 июня 2019, 17:32
Спасибо тебе, добрый человек
0
Роман
23 июня 2019, 14:05
Учитель от Бога.
0
Евгений
25 июня 2019, 12:45
Спасибо за ссылку! это то что мне нужно было что бы понять этот материал!
0