使两个类在界面中一起工作

时间:2019-04-22 00:24:53

标签: java

我对接口方法很陌生。

我正在根据我看过的练习,使加法和乘法类在接口中一起工作。

对于类Addition,我必须采用IntegerExpression的两个实例,即+操作的左侧和右侧参数。我必须使用两个实例变量来存储对两个子表达式的引用。 getValue应该返回将两个子表达式提供的值相加的结果。

对于另一个类Multiplication,getValue()应该通过将两个子表达式提供的值相乘来返回结果。

我已经创建了3个使用IntegerExpression的类,但是我的代码导致编译错误,这就是出现此问题的原因:

public interface IntegerExpression {
    int getValue();
}


public class IntegerConstant implements IntegerExpression {
private int val;
public int getValue(){
    return val;
}  
public int IntegerConstant(int num){
    val = num;
    return val;
    }
}


public class Addition implements IntegerExpression {
private int numberOne; 
private int numberTwo;
public Addition(int one, int two)
{
    int result = numberOne+numberTwo;
    return result;
}
public int getValue(){
    return Addition(int numberOne, int numberTwo);
    }
}


public class Multiplication implements IntegerExpression{
    public int getValue(){
        return numberOne*numberTwo;
     }
}

假设我能够修复以上代码-我希望能够编写以下代码:

IntegerExpression p1 = new Addition(new IntegerConstant(1), new IntegerConstant(2));

IntegerExpression p2 = new Multiplication(p1, new IntegerConstant(3));

2 个答案:

答案 0 :(得分:1)

OP中提供的代码中存在多个问题,我自由地重构了代码,如下所示(使用following Java IDE进行了验证):

(defun lein-javac (&optional PROJECT-DIR)
  (interactive)
  (let ((output-buffer (progn
                         (with-output-to-temp-buffer "*lein-javac*" nil )
                         (select-window (get-buffer-window "*lein-javac*"))
                         (read-only-mode 'toggle)
                         (window-buffer)) ))
   (shell-command (concat "cd " (or PROJECT-DIR default-directory) 
                         " && lein javac &") "*lein-javac*")))

我建议您对基于两个操作数的Integer常量使用抽象实现,如上面所实现的那样-重复构建代码。

答案 1 :(得分:-1)

对于加法,您已在构造函数中返回sum。构造函数通常用于初始化类的变量。总和应该已经在getValue方法本身中完成了。

public class Addition implements IntegerExpression {
    private int numberOne; 
    private int numberTwo;
    public Addition(int one, int two) {
        this.numberOne = one;
        this.numberTwo = two;
    }
    public int getValue(){
        int result = this.numberOne+this.numberTwo;
        return result;
    }
}

}