Java构造函数不能应用给定的类型

时间:2014-11-14 19:54:09

标签: java

我有一个主类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不能应用于给定的类型; 必需:文件 发现:没有争论 原因:实际和正式的参数列表长度不同 "

2 个答案:

答案 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;
    }
}