В Java существует понятие upcasting
и downcasting
. Повышение рейтинга означает приведение к супертипу, тогда как снижение рейтинга означает приведение к подтипу.
Всякий раз, когда есть Is-A
отношения, вы можете делать апкастинг без какого-либо вреда. Но это уныние, о котором нужно позаботиться.
Например, у вас есть People array
и так как Employee
и Manager
классы extends
People
, поэтому в массиве People могут храниться оба из них. Теперь, когда вы делаете Employee ref2 = people[1];
, компилятор не знает, является ли он сотрудником, поскольку существует равная вероятность того, что он может быть Manager, поскольку класс Manager также расширяет People. Таким образом, вам нужно явно предоставить приведение, которое сообщает компилятору, что вы знаете, что делаете, и нет необходимости выдавать ошибку компиляции. Но если во время выполнения возникнет какая-либо проблема, будет выдан ClassCastException
.