无法覆盖父类的方法

时间:2015-07-16 09:12:07

标签: java override ioexception

尝试覆盖父类的方法时出现编译错误:

public class Reader {
    public void readToDbFromFile(String fileName, String table) throws FileNotFoundException() {
         ....
    }
}

public class ReaderWithBackup extends Reader {
    @Override
    public void readToDbFromFile(String fileName, String table) throws IOException {
        super.readToDbFromFile();
        doBackup(fileName, table);
    }

    ...
}

它表示' overriden方法不会抛出IOException'。这是什么意思?我该如何解决?

提前致谢。

2 个答案:

答案 0 :(得分:0)

你不能在子类的重写方法中抛出超级类的Parent Exception

由于FileNotFoundExceptionIOException的子类,因此不能在子类中抛出IOException

所以你可以通过交换IOExceptionFileNotFoundException来做到这一点: -

public class Reader {
    public void readToDbFromFile(String fileName, String table) throws IOException () {
         ....
    }
}

public class ReaderWithBackup extends Reader {
    @Override
    public void readToDbFromFile(String fileName, String table) throws FileNotFoundException{
        super.readToDbFromFile();
        doBackup(fileName, table);
    }

    ...
}

答案 1 :(得分:0)

在你的课堂上readToDbFromFile抛出FileNotFoundException。您应该在覆盖功能中抛出FileNotFoundException而不是IOException