Създаване на обекти - 1

„Здрасти, отново е любимият ти учител. Тъй като напредваш толкова много, реших да ти разкажа за предметите и How да работиш с тях.“

" За да създадете обект, трябва да въведете ключовата дума "нов", последвана от името на неговия тип (име на клас). Да предположим например, че имаме клас с име "Котка":"

Код Описание
Cat cat;
Декларира референтна променлива Cat с име cat. Стойността на променливата cat е нула.
new Cat();
Създава обект Cat.
Cat cat = new Cat();
Създава референтна променлива Cat с име cat.
Създава нов обект Cat. Присвоява препратка към новосъздадения обект към променливата cat.
Cat kitty = new Cat();
Cat smokey = new Cat();
Създават се два обекта. Препратките към тях се присвояват на две различни променливи.
Cat kitty = new Cat();
Cat smokey = new Cat();

smokey = kitty;
Създават се два обекта. Препратките към тях се присвояват на две различни променливи.

След това задаваме променливата smokey равна на препратка към обекта, посочен от променливата kitty. И двете променливи вече се отнасят за първите създадени обекти.
(Тъй като вторият обект вече не се споменава никъде, сега се счита за боклук)

Cat kitty = new Cat();
Cat smokey = null;

smokey = kitty;

kitty = null;
Създава се един обект Cat и препратка към него се присвоява на първата променлива (kitty). Втората променлива (smokey) съхранява празна (нулева) препратка.

И двете променливи се отнасят за един и същи обект.

Сега само smokey, но не и kitty, се отнася за обект.

„Какво би се случило, ако създадем обект и не запазим препратка в нито една променлива?“

„Ако просто създадем обект, без да го присвоим на променлива, Java машината ще го създаде и след това ще го обяви за боклук (неизползван обект). След известно време обектът ще бъде изхвърлен по време на събирането на боклука .

„Как да изхвърля предмет, който вече не ми трябва?“

"Вие не го правите. Веднага щом никоя променлива не се отнася до даден обект, той се маркира като боклук и се унищожава от Java машината следващия път, когато събира боклук. "

Докато има поне една препратка към обект, той се счита за активен и няма да бъде унищожен. Ако искате да изхвърлите обект по-рано, можете да изчистите всички препратки към него, като присвоите null на всички променливи, които го препращат.

„Разбирам. В сравнение с последните няколко урока, това изглежда доста просто.“

„Диего беше буден цяла нощ и измисляше задачи за теб. Той направи това специално усorе само за теб. Той има страхотно чувство за хумор, разбираш ли?“


Фрагмент от лекция с ментор като част от курса на Codegym University. Запишете се за пълния курс.