ClassCastException к дочернему классу

У меня есть родительский класс Hexagon и дочерний MinecraftHexagon.

public MinecraftHexagon extends Hexagon {
        
    public MinecraftHexagon(HexagonGrid grid, long q, long r) {
        super(grid, q, r);
    }
}

Я пытаюсь кастовать Hexagon к MinecraftHexagon

Hexagon hexagon = new Hexagon(grid, 4L, 9L);
hexagons[0] = (MinecraftHexagon) hexagon;

Выдаёт ClassCastException:

Exception in thread "main" java.lang.ClassCastException: 
Hexagon cannot be cast to MinecraftHexagon

Вроде бы я правильно привожу типы? Подскажите пожалуйста, как я могу использовать методы дочернего класса, используя родительский?


Ответы (1 шт):

Автор решения: Agzam

Просто создавайте не new Hexagon, а new MinecraftHexagon, и тогд не будет ошибки:

Hexagon hexagon = new MinecraftHexagon(grid, 4L, 9L);
hexagons[0] = (MinecraftHexagon) hexagon;

или

MinecraftHexagon hexagon = new MinecraftHexagon(grid, 4L, 9L);
hexagons[0] = hexagon;

Во втором способе даже не надо приводит типы


Так то же можно:

hexagons[0] = new MinecraftHexagon(grid, 4L, 9L);
PS: вот только мне интересно: что за проект такой странный, и для чего он
→ Ссылка