我試圖實現一個簡單的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。 –