Когда я пытаюсь скомпилировать мой производный класс IntSearchTree, появляется сообщение об ошибке
IntSearchTree.java:3: error: constructor IntBinTree in class IntBinTree
cannot be applied to given types;
IntSearchTree(int node, IntSearchTree left, IntSearchTree right) {
required: int,IntBinTree,IntBinTree
found: no arguments
reason: actual and formal argument lists differ in length
1 error
.
В следующем коде показаны наиболее важные строки базового класса:
class IntBinTree {
int node;
IntBinTree left;
IntBinTree right;
IntBinTree(int node, IntBinTree left, IntBinTree right) {
this.node = node;
this.left = left;
this.right = right;
}
}
И наиболее важные строки производного класса:
class IntSearchTree extends IntBinTree {
IntSearchTree left;
IntSearchTree right;
IntSearchTree(int node, IntSearchTree left, IntSearchTree right) {
this.node = node;
this.left = left;
this.right = right;
}
}
Я попытался решить эту проблему, предоставив конструктору в базовом предложении частный модификатор
private IntBinTree(int node, IntBinTree left, IntBinTree right) {...}
, но сообщение об ошибке компиляции было таким же.
Итак, первый вопрос: как определить конструктор таким образом, чтобы он был видим в базовом классе, но не в производных классах?
И второй вопрос: почему базовый конструктор все еще виден в производном классе, даже если я использую частный модификатор?