class ClassA {}
class ClassB extends ClassA {}
class ClassC extends ClassA {}
а также
ClassA p0 = new ClassA();
ClassB p1 = new ClassB();
ClassC p2 = new ClassC();
ClassA p3 = new ClassB();
ClassA p4 = new ClassC();
p0 = p1 works
But, p1 = p2 fails compilation....
Не могу понять, почему такое поведение, когда иерархия одинакова в обоих утверждениях? А -> В -> С