Man man = new Man(). Я понимаю, что Man - это объект, man - переменная, new Man() - ссылка на объект. Так? Почему вместо Man мы не используем Person? Откуда берется запись men.wife?
artem
3 уровень
Что есть объект???
Решен
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
JustinianJudge в Mega City OneMaster
16 октября 2019, 13:05решение
Моя старая копипаста на тему.
Man это тип переменной.
man имя переменной.
new ключевое слово которое запускает создание нового объекта
Man() указание имени класса, объект которого будет создаваться, скобки это конструктор. В них могут быть параметры (которые передаются для того, чтобы они учитывались при создании класса), могут быть пустые скобки.
man.wife
man - имя переменной
. - оператор точка, он позволяет обращаться к полям (переменным) и методам объекта, на который ссылается переменная man
wife это поле в созданном объекте
int a = 4;
man.wife = woman;
в первом случае, мы объявляем переменную типа инт, с именем а, и присваиваем значение - число 4.
во втором случае, в переменную wife объекта man мы присваиваем ссылку на женщину (переменная, которая указывает на объект класса Woman .
+6
artem
16 октября 2019, 18:33
Максимально разжевал. Я так понимаю, что в Java существует огромное кол-во типов переменных: Person, Man, Woman, Child....Rabbit, Cow, Bird........Mechanic, Lawer, Worker и т.д.?
+1
Wladyslaw Java Developer Master
16 октября 2019, 18:44полезный
Когда ты пишешь класс - ты по сути, описываешь свой тип данных. После чего можешь в своем коде использовать этот тип, объявляя переменные этого типа, создавая объекты.
+2
JustinianJudge в Mega City OneMaster
16 октября 2019, 22:51полезный
Да, у любого объекта есть класс, который его описывает. На основе кода которого этот объект и создается.
Класс это у нас получается тип объекта, или другими словами тип переменной, которая хранит в себе ссылку на объект определенного типа.
Менять тип переменной нельзя.
Если было объявлено:
Man man = new Woman();
то переменной man уже не стать женщиной, козликом или орлом. Там есть нюансы, но тип переменной всегда будет Man до самой гибели переменной (по завершению программы или ненадобности)
+1
JustinianJudge в Mega City OneMaster
16 октября 2019, 12:59полезный
На примере:
Есть класс Woman.
Класс может иметь методы (обособленные подпрограммы) и поля (или по другому называют - переменные класса).
В этом классе мы видим три переменных (полей класса) - возраст, рост и муж.
Поля класса это характеристики объекта. То есть созданная на базе этого класса объект типа Женщина будет иметь такие свойства:
возраст, рост, муж.
Теперь к строке
ключевое слово public - это модификатор доступа, который говорит, что мы можем к этому полю обращаться с другого класса.
Man - это тип переменной, в других полях - age и height- тип переменной int (примитивный тип, который содержит целочисленное число). В нашем случае, Man это тип Мужчина. Это значит что объект, который будет в этом поле/свойстве/характеристике - будет именно типа Мужчина. Не Собака или Осел или Креветка.
husband это имя переменной класса/поля. Эта переменная будет ссылаться на конкретный объект, в случае наличия мужа..
По умолчанию, значение переменной husband будет равно null (это дефолтное значение ссылочных переменных, если их не инициализировали).
То есть эти строки полностью равнозначны:
Что логично, женщина при создании (рождении) имеет потенциальную возможность иметь мужа (есть соответствующее поле), но естественно, это поле никуда не ссылается (равно null), потому что мужа пока нет. А потом со временем, женщина может выбрать мужа - тогда ссылка husband будет ссылаться на конкретного мужчину (конкретный объект в памяти).
В данной задаче это происходит в методе main (первый и четвертый пункт условий)
+1
JustinianJudge в Mega City OneMaster
16 октября 2019, 12:59полезный
В методе main
создается новый объект типа Жещина.
И тут она решает выбрать Максима в мужья.
Идет регистрация брака, или съезжаются в гражданском - не важно, но статус у женщины поменялся.
через точку мы обращаемся к полям/методам объекта.
Мы обращаемся к полю класса и присваиваем ссылку на мужчину - Алексея. Теперь он ее муж.
Но допустим он выносил елку в августе и приходил домой в помаде, и его выставили за дверь.
Развод.
В коде это будет как?
Мы убрали ссылку на Алексея. Переменная husband никуда не ссылается - мужа нет.
Но вот встретился Иван, который решил скрасить будни. И снова есть муж.
В коде это:
присваивается ссылка на конкретного мужчину Ивана.
+3