Что такое upcasting и downcasting в Java, и в каких ситуациях их используют? — ДейлиПреп