我试图实现一个简单的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没有这样的方法类。以编程方式选择非常类似的最小和最大堆实现的最佳方式是什么?
如果'insert'的实现方式不同,是不是可以在'Heap'类/接口中定义? – MadProgrammer
'insert'应该是'Heap'类中的抽象方法 – Phoenix
另外,请尊重Java命名约定。 Java类应该以大写字母开头:MaxHeap,MinHeap。 –