我有一个主类DataManager,它有一个扩展DataManager的子类FileHandler。
public class DataManager{
protected File file;
private FileHandler fileHandler;
public DataManager(File fileIn) {
this.file = fileIn;
fileHandler = new FileHandler(file);
}
//other class stuff}
另一堂课:
public class FileHandler extends DataManager {
private File file;
public FileHandler() {
this.file = file;
}
//other class stuff }
我遇到错误的问题,指出构造函数无法应用给定的类型。这是我第一次使用Java继承,这个问题对于我想要的东西并不是很有帮助。
以下是我从NetBeans获得的更具体的版本......
"类DataManager中的构造函数DataManager不能应用于给定的类型; 必需:文件 发现:没有争论 原因:实际和正式的参数列表长度不同 "
答案 0 :(得分:4)
FileHandler()隐式调用其父级的构造函数:super()。
super()期望找到一个不带参数的构造函数。但是,在父级上只有1个构造函数需要一个文件。
请参阅以下内容:
修复错误调用:super(file)
您的代码应为:
import java.io.File;
public class DataManager {
protected File file;
public DataManager(File fileIn) {
this.file = fileIn;
}
}
// -------------
import java.io.File;
public class FileHandler extends DataManager {
public FileHandler(File file) {
super(file);
}
}
答案 1 :(得分:0)
创建另一个构造函数.beacause new FileHandler(file)
编译器知道FileHandler
中不存在一个参数构造函数
public class FileHandler extends DataManager {
private File file;
public FileHandler() {
}
public FileHandler(File file) {
this.file = file;
}
}