没有为java找到合适的构造函数

时间:2016-02-19 06:45:26

标签: java

这里的Java新手。当我试图使用的构造函数只有一个int参数时,当我尝试在另一个类中使用一个参数创建一个新实例时,我得到一个没有合适的构造函数的错误,它给了我这个错误。我错误的是给了我这个错误?

public class dHeap <T extends Comparable <? super T>> implements dHeapInterface<T> {

    private int children;
    private T[] array;
    private int size;

    public dHeap (int heapSize){
       array = (T[]) new Comparable[heapSize];
       children = 2;
       size = 0;
    }
    public dHeap (int d, int heapSize) { 
       array = (T[]) new Comparable[heapSize];
       children = d;
       size = 0;
    }
...
}

public class MyPriorityQueue<T extends Comparable <? super T>> extends dHeap<T> {
  private dHeap<T> queue;
  private int size;

  public MyPriorityQueue(int queueSize)
  {
    queue = new dHeap<T>(queueSize);
    size = 0;
  }
...
}

错误是

no suitable constructor found for dHeap()
constructor dHeap.dHeap(int,int) is not applicable
  (actual and formal argument lists differ in length)
constructor dHeap.dHeap(int) is not applicable
  (actual and formal argument lists differ in length)

2 个答案:

答案 0 :(得分:0)

在类dHeap的代码中,您尚未创建任何默认构造函数 但是在MyPriorityQueue中你扩展它并且构造函数调用它的超级默认构造函数,在这种情况下不存在...

答案 1 :(得分:0)

由于MyPriorityQueue 扩展 dHeap,并且dHeap没有no-arg构造函数,因此必须调用使用super( ... args here ... )的适当构造函数。

由于MyPriorityQueue dHeap,您可能希望删除字段queue,并将queue = new dHeap<T>(queueSize);替换为super(queueSize) }。

您可能还想删除字段size