Java 如何在构造函数中明确一个对象以及该对象的所有子类都可以插入?
我正试图使它能够像这样初始化类函数的实例Java 如何在构造函数中明确一个对象以及该对象的所有子类都可以插入?,java,constructor,Java,Constructor,我正试图使它能够像这样初始化类函数的实例 Function chain = new CosineFunction(new SquareRootFunction(new SineFunction())); 这是超级类函数的代码 public class Function { private Function innerFunction; public Function() { } public Function(Fu
Function chain = new CosineFunction(new SquareRootFunction(new SineFunction()));
这是超级类函数的代码
public class Function {
private Function innerFunction;
public Function() {
}
public Function(Function innerFunction) {
this.innerFunction = innerFunction;
}
public double calculate(double value) {
if(innerFunction != null) {
return innerFunction.calculate(value);
} else {
return this.formula(value);
}
}
protected double formula(double value) {
return value;
}
public Function getInnerFunction() {
return innerFunction;
}
public void setInnerFunction(Function innerFunction) {
this.innerFunction = innerFunction;
}
}
名称末尾带有“function”的任何其他类都是function
的子类。唯一的@覆盖
是受保护的双重公式(双重值)
如果我尝试启动一个链,我会得到一个错误,说:
构造函数余弦函数(SquareRootFunction)未定义
我如何明确说明,构造函数中也允许使用函数
的所有子类?您的问题在于余弦函数
的构造函数,因此您需要显示余弦函数
的代码。构造函数不是继承的,因此您需要在每个子类中定义适当的构造函数。作为一种解决方法,应该可以定义(函数f){setInnerFunction(f)的方法;在函数中返回该方法;}
,然后将其用作(新SineFunction())的新CosineFunction().of(新SineFunction())
。缺点是,innerFunction
不能是final
,但现在它不是(但可能应该是)。啊,我不知道构造函数不是继承的,谢谢