Вот код:понижающее приведение безопасности
Base b = new Derived(); // Upcasting
// Some actions
Derived d = (Derived)b; // Downcasting
Как я понимаю, речь идет как трафарет, через который вы смотрите на какой-то кусок памяти. И повышение уровня просто сужает этот трафарет, поэтому вы не можете получить доступ к членам, добавленным в класс Derived. И Downcasting здесь расширяет этот трафарет назад.
Вопрос: Поскольку никакая ссылка на производную часть типа не сохранилась, просто база. Может случиться так, что некоторые действия или активность GC стирают или перезаписывают кусок памяти, который использовался, чтобы содержать члены Derived, к тому времени, когда произошло понижение? Другими словами, может понизиться Derived d = (Derived)b
?
Это может быть, но только если 'b' не' Derived'. – Tony
Спасибо, я это знаю. Но может ли потерянная часть типа быть потеряна, поскольку никакая ссылка на нее не сохранила только базовую. –