Из комментариев A : D
, поэтому все A
равны D
, но не все D
обязательно A
.
То есть с двумя переменными:
A classA;
D classD = ...
Нам нужно
classA = (A) classD;
Это делает проверку типа, чтобы подтвердить, что конкретный classD
является на самом деле также A
. Если это так (или null
), то присвоение выполнено успешно; в противном случае возникает исключение.
Это сделано для того, чтобы вы не присвоили classA
что-то, что на самом деле не A
.
Обратите внимание, что это неявный другой способ, так как компилятор знает, что он действителен:
classD = classA; // always valid - no type check