0
這是我的大學課程。抽象類獲取「無法找到符號」錯誤
我有這樣的頂層抽象類,Expression.java(由教授提供):
public abstract class Expression {
public abstract int eval();
public abstract String toString();
}
BinaryExpression.java(也由教授提供),其延伸Expression.java:
public abstract class BinaryExpression extends Expression {
protected Expression left;
protected Expression right;
public BinaryExpression (Expression l, Expression r) {
left = l;
right = r;
}
public abstract int eval();
public abstract String toString();
}
最後Add.java(我寫這篇)擴展BinaryExpression.java:
public class Add extends BinaryExpression {
//Fields
protected Expression left;
protected Expression right;
//Constructor
public Add(Expression l, Expression r) {
left = l;
right = r;
}
//Methods
public int eval() {
return left.eval()+right.eval();
}
public String toString() {
return left + "+" + right;
}
}
測試人員Test.java也提供了。還有其他三個類擴展了BinaryExpression,Subtract,Multiply和Divide,但它們實際上與Add相同。 Plus和Minus只是存儲一個值,可以是負值也可以是正值。
public class Test {
public static void main (String [] args) {
Expression s1 = new SimpleExpression(10);
Expression s2 = new SimpleExpression(-3);
System.out.println("s1: " + s1 + " = " + s1.eval());
System.out.println("s2: " + s2 + " = " + s2.eval());
Expression u1 = new Plus(s2);
Expression u2 = new Minus(s1);
System.out.println("u1: " + u1 + " = " + u1.eval());
System.out.println("u2: " + u2 + " = " + u2.eval());
Expression b1 = new Add(u1, s2);
Expression b2= new Subtract(s1, u2);
Expression b3= new Multiply(u1, b1);
Expression b4= new Divide(u2, b3);
System.out.println("b1: " + b1 + " = " + b1.eval());
System.out.println("b2: " + b2 + " = " + b2.eval());
System.out.println("b3: " + b3 + " = " + b3.eval());
System.out.println("b4: " + b4 + " = " + b4.eval());
Expression e = new Minus(new Multiply(b3, b2));
System.out.println("e: " + e + " = " + e.eval());
// example given in the assignment
e = new Divide(new Add(new Minus(new SimpleExpression (10)),
new SimpleExpression (50)),
new Minus(new Multiply(new SimpleExpression(5),
new Minus (new SimpleExpression (3)))));
System.out.println("Another e: " + e + " = " + e.eval());
}
}
當我編譯Test.java,我得到這個錯誤(和一個類似的減,乘,除):
./Add.java:8: cannot find symbol
symbol : constructor BinaryExpression()
location: class BinaryExpression
public Add(Expression l, Expression r) {
發生了什麼事?