Java: приведение класса к несвязанному интерфейсу

Очевидно, это приводит к ошибке компиляции, потому что Chair не связан с Cat:

class Chair {}
class Cat {}

class Test {
   public static void main(String[] args) {
       Chair chair = new Char(); Cat cat = new Cat();
       chair = (Chair)cat; //compile error
   }
}

Почему же тогда я получаю исключение только во время выполнения, когда создаю ссылку Cat на несвязанный интерфейс Furniture, в то время как компилятор может явно сказать, что Cat не реализует Furniture?

interface Furniture {}

class Test {
   public static void main(String[] args) {
       Furniture f; Cat cat = new Cat();
       f = (Furniture)cat; //runtime error
   }
}

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

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