Java 创建不包含';t自动使用超级构造函数

Java 创建不包含';t自动使用超级构造函数,java,inheritance,constructor,extends,Java,Inheritance,Constructor,Extends,我有几门课: import java.io.File; public interface Filter { public boolean passes(); } 最后, import java.io.File; public class HFilter extends PFilter { public HFilter(String val, File f) { super(value, f); } @Override public

我有几门课:

import java.io.File;
public interface Filter {

    public boolean passes();

}
最后,

import java.io.File;

public class HFilter extends PFilter {
    public HFilter(String val, File f) {
        super(value, f);
    }

    @Override
    public boolean passes() {
        return file.isHidden();
    }
}

我想知道我是否可以不在
HFilter
类中调用
super()
。那么,在创建HFilter实例时,一旦我输入两个参数,它会自动调用
super()
,然后我就不需要构造函数了吗?

那么,当。。。它会自动调用super(),然后我就不需要构造函数了?=>否。当您替换超类中的默认构造函数时,编译器希望您显式调用super。因此,不管怎样,我必须为Hfilter定义相同的构造函数,然后调用super?这看起来有点奇怪。类知道它是一个扩展,所以它不应该知道它需要哪个构造函数吗?不一定。对于
Hfilter
,您可以使用任何想要的构造函数,但是构造函数中的第一个方法调用必须满足super的要求constructor@ernest_k错过了你的编辑。确保-超类拥有默认构造函数是没有意义的,因此,我不应该仅仅为了获得我要寻找的功能而创建一个构造函数?@Omri.B问题是,您有数据被传递到构造函数,所以您的非默认构造函数有被传递的理由。不幸的是,构造函数没有被继承/重写,因此您必须复制构造函数(如果值必须由构造函数设置)
import java.io.File;

public class HFilter extends PFilter {
    public HFilter(String val, File f) {
        super(value, f);
    }

    @Override
    public boolean passes() {
        return file.isHidden();
    }
}