Явное - это когда ты в скобках (либо через вызов методов) преобразуешь переменную одного типа к другому. При этом, не факт, что это преобразование пройдёт и пройдёт правильно.
Автомат - это когда тип, который "больше" участвует в операциях с "меньшими" типами и нужно преобразование. Ява сама сумеет преобразовать, так как данные не теряются.
Пример:
int a = 70000;
short b = 10;
int c = a + b; // Тут b автоматом преобразуется к типу int, так как компилятор знает,
// что данные из него не потеряются при преобразовании.
short d = (short) (a + b);
Если убрать преобразование всей суммы к short, не скомпилится, типы не совпадают. Переменную "a" (вернее, всю сумму) надо преобразовать к short, но результат суммы будет int. short меньше int и данные из "а" могут потеряться. Нужно вручную преобразовывать.
С классами всё примерно также.