Изучение моего экзамена OCA Java SE 7 Programmer I, так что вопрос новичков. У меня есть примерный вопрос, который я не понимаю. Следующий код компилируется, но во время выполнения предоставляет 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()
?