Назначена ссылка на Java

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....

Не могу понять, почему такое поведение, когда иерархия одинакова в обоих утверждениях? А -> В -> С


person Sameer    schedule 09.08.2013    source источник
comment
Может быть, ClassC следует расширить ClassB, чтобы ваша иерархия была точной?   -  person Joachim Isaksson    schedule 09.08.2013


Ответы (1)


В вашей иерархии A-> B-> C неверно. Это A-> B, A-> C. И C не является подтипом B.

person dbf    schedule 09.08.2013