我对接口方法很陌生。
我正在根据我看过的练习,使加法和乘法类在接口中一起工作。
对于类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));
答案 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;
}
}
}