Оба вызова вызывают lion()
в базовом лесу, к которому относятся и f
, и j
.Если f
больше не ссылается на базовый лес, но j
по-прежнему работает, то j.lion()
все равно будет работать, как и ожидалось.
Здесь следует иметь в виду, что f
иj
являются ссылками на леса - фактические леса, на которые они ссылаются, существуют где-то в памяти.В тот момент, когда больше нет никаких ссылок на фактический базовый лес, этот лес становится кандидатом на сборку мусора (обратите внимание: он может не собираться мусором сразу).Но пока сохраняется хотя бы одна ссылка на основной лес, этот лес все еще существует.Здесь из-за того, что f
больше не ссылается на базовый лес, все еще остается j
со ссылкой на него, поэтому базовый лес все еще существует, и вызов j.lion()
будет успешным.