Я пытаюсь реализовать простой класс binary heap, в котором пользователь может выбрать, нужна ли им минимальная или максимальная куча.Доступ к функциям подкласса объекта (динамически выбранного)
Я сделал суперкласса аннотация:
abstract class Heap
{
size() { ... }
peek() { ... }
}
Основной метод выбирает для создания экземпляра либо maxHeap или minHeap подкласс.
public static void main(String[] args)
{
Heap myHeap = new minHeap();
if (/* some condition */)
myHeap = new maxHeap();
}
myHeap.insert(/* some value */);
Функция вставки осуществляется по-разному в мин и макс кучи классов:
class minHeap extends Heap
{
public void insert() { ... }
}
class maxHeap extends Heap
{
public void insert() { ... }
}
Конечно, вызывая вставку() от основной кидает ошибку, так как нет такого метода в Heap класс. Какой был бы лучший способ программно выбирать между очень похожими реализациями min и max heap?
Если 'insert' реализован по-разному, не может ли он быть определен в классе/интерфейсе' Heap'? – MadProgrammer
'insert' должен быть абстрактным методом в классе' Heap' – Phoenix
Также, пожалуйста, соблюдайте соглашения об именах Java. Классы Java должны начинаться с буквы верхнего регистра: MaxHeap, MinHeap. –