Вы можете разыграть ProductA
ссылку на MyProduct
ссылку, но только , если она действительно указывает на MyProductA
или ее потомка.
То, что вы делаете, это пытаетесь относиться к родителю как к ребенку, это не работает.Скорее, вы можете обращаться с ребенком как с родителем, поскольку похож на родителя.
Подумайте об общем примере, где базовый класс называется Shape
и имеет таких детей, как Square
и Circle
.Имея ссылку Shape
, вы можете назначить ей любого ребенка.Но если ссылка ссылается на Circle
, вы не можете привести ее к Square
.Это имеет смысл, потому что все круги - это фигуры, но нет кругов - это квадраты.
Надеюсь, примеры помогут.