Почему объект суперкласса не может быть неявно преобразован в объект подкласса в 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();
на самом деле (я имею в виду, что происходит внутри)?