在 Number 类的构造函数中,先将传入的字符转换为对应的数字。在解释时将转换后的数字返回即可。

无论是加法还是减法,他们都是对左右两个表达式进行操作,所以我们可以将计算符提取出共同的抽象父类:
abstract class Operator implements Expression {
Expression left;
Expression right;
Operator(Expression left, Expression right) {
this.left = left;
this.right = right;
}
}
在此抽象父类中,我们存入了两个变量,表达计算符左右两边的表达式。
加法类实现如下:
class Add extends Operator {
Add(Expression left, Expression right) {
super(left, right);
}
@Override
public int intercept() {
return left.intercept() + right.intercept();
}
}
减法类:
class Sub extends Operator {
Sub(Expression left, Expression right) {
super(left, right);
}
@Override
public int intercept() {
return left.intercept() - right.intercept();
}
}