Почему объект суперкласса не может быть неявно преобразован в объект подкласса в Java?

У меня есть следующий код:

class A {
}

class B extends A {
    public void fB(){};
}

Согласно правилу Java:

Дело 1:

B b = new B();
A a = b;
((B)a).fB();

Случай 2:

A a = new A();
B b = a;

Согласно правилу Java, случай 1Хорошо и случай 2не нормально, Почему Случай 2не нормально? И что это за линия((B)a).fB(); на самом деле (я имею в виду, что происходит внутри)?

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

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