ClassCastException и «не могу привести» к ошибке компиляции

Я готовлюсь к экзамену OCA Java SE 7 Programmer, так что вопрос новичка. У меня есть пример вопроса, который я не понимаю. Следующий код компилируется, но выдает ClassCastException во время выполнения:

interface Roamable {
}

class Phone {
}

public class Tablet extends Phone implements Roamable {
    public static void main(String... args) {
        Roamable var = (Roamable) new Phone();
    }
}

Когда я меняюRoamable var = (Roamable) new Phone(); вRoamable var = (Roamable) new String(); Я сразу получаю ошибку компиляции.

Два вопроса:

Почему приведенный выше код компилируется вообще? Телефон кажется не связанным с Roamable для меня?Почему код компилируется сnew Phone(), но не делаетскомпилировать?new String()

Ответы на вопрос(6)

Ваш ответ на вопрос