не поняла откуда мы взяли man, почему в скобках не нужно указывать имя? подразумеваю этот фрагмент: Man man = new Man();
задание выполнила, но по аналогии с предыдущим, а предыдущие долго ковыряла именно в этом моменте. в общем, помогите разобраться;)
Александра
2 уровень
не разобралась
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
JustinianJudge в Mega City OneMaster
20 февраля 2020, 22:37
Man - тип переменной, какого типа объекты мы хотим хранить в переменной.
должно соответствовать какому-то имени класса (интерфейсу) ( то есть где-то должно быть
написано class Man { или interface Man { (про интерфейсы будет позже, пока не забивай голову)
man - имя переменной, это то имя которые мы задаем для переменной. Может быть каким угодно,
man, murzik548, electricSheepsDestroyer и тд. Это имя как ярлык, это наш способ , закладка в
книге, удобный стикер, чтобы мы могли обратиться к переменной.
= знак присвоения переменной какого-то значения, в данном случае это будет присвоение ссылки на объект.
new - ключевое слово, которое создает новый объект в памяти, и возвращает ссылку на этот объект
Man - имя конкретного класса, объект которого будет создаваться.
() - это скобки конструктора. Если они пустые, значит у объекта есть конструктор по умолчанию, тогда мы ничего не передаем.
Если у объекта есть конструктор с параметрами, например так:
то тогда мы создаем объект ПЕРЕДАВАЯ параметр в конструктор:
Cat cat = new Cat("Murchik");
В данной задаче, я так понимаю, нету конструктора с параметрами, поэтому Man();
Итого:
Man man = new Man();
Сначала выполняется Man man:
Объявляется переменная типа Man (которая может хранить именно объекты класса Man) с именем man.
Потом выполняется new Man():
в памяти компьютера выделяется память под объект, создается объект - экземпляр класса Man, параметры пустые (), то есть все по умолчанию, и возвращается ссылка на этот объект в памяти - где он находится.
Потом выполняется =
в переменную man заносится значение - это ссылка на место в памяти, где этот конкретный экземпляр объекта.
И теперь, когда нам нужен этот конкретный объект в памяти, мы просто пишем man.
+6
JustinianJudge в Mega City OneMaster
20 февраля 2020, 22:43
и автоматически вместо man будет подставляться этот адрес в памяти и компьютер знает, что это именно этот конкретный объект.
традиционный вопрос, сколько объектов создается в этом коде?
Ответ - 2 шт.
Объявлено ТРИ переменных, которые могут хранить ссылки на объекты, это man1, man2 и man3.
Но создано всего ДВА объекта, это легко запомнить - один оператор new, один объект.
В третьем случае, в строке
Будет объявлена переменная типа Man с именем man3, и ей будет присвоено значение, которое хранит переменная man2, а именно ссылку на второй созданный объект (, который был создан во второй строке этого кода - Man man2 = new Man());
Итого, объект у нас этот конкретный один (не берем во внимание ОТДЕЛЬНЫЙ объект, созданный для man1).
Вот здесь:
ОДИН объект, экземпляр класса Man.
И ДВЕ переменных, которые ссылаются на него:
то есть И man2 И man3 ссылаются на один и тот же объект.
В строке Man man3 = man2; переменная man3 просто получила копию ссылки на объект.
Это как один телевизор, и два пульта. Один объект, две переменных ЧЕРЕЗ которые мы имеем доступ к этому объекту.
+6
Александра
21 февраля 2020, 07:21
Спасибо)
0