如何强制子类创建构造函数?
How to force a subclass to make a constructor?
所以,我有一个带有构造函数的超类:
public Asset(InputStream input) throws Exception {
load(input);
}
protected Asset() {}
第二个构造函数是为了让我可以在子类中创建一个构造函数,该构造函数通过给定的参数执行所有操作,而不是从外部源加载资产,但是,我还希望子类创建一个构造函数使用 super(InputStream).
所以,问题是,我怎样才能强制子类使用 super(InputStream) 创建构造函数,同时允许子类在没有它的情况下创建构造函数?
只需将超class设置为缺少默认构造函数。例如:
public class Super{
public Super(SomeParameter x) {
}
}
然后,在子class中你将被迫提供至少一个构造函数,其中一个参数为SomeParameter
类型:
public class Sub extends Super {
public Sub(SomeParameter x) {
super(x);
}
}
所以,我有一个带有构造函数的超类:
public Asset(InputStream input) throws Exception {
load(input);
}
protected Asset() {}
第二个构造函数是为了让我可以在子类中创建一个构造函数,该构造函数通过给定的参数执行所有操作,而不是从外部源加载资产,但是,我还希望子类创建一个构造函数使用 super(InputStream).
所以,问题是,我怎样才能强制子类使用 super(InputStream) 创建构造函数,同时允许子类在没有它的情况下创建构造函数?
只需将超class设置为缺少默认构造函数。例如:
public class Super{
public Super(SomeParameter x) {
}
}
然后,在子class中你将被迫提供至少一个构造函数,其中一个参数为SomeParameter
类型:
public class Sub extends Super {
public Sub(SomeParameter x) {
super(x);
}
}