为什么我们使用这个表格? (这是关于Java的复数视线的课程)
public MathEquation(char opCode)
{
this.opCode = opCode;
}
public MathEquation(char opCode , double leftVal , double rightVal)
{
this(opCode);
this.leftVal = leftVal;
this.rightVal = rightVal;
}
为什么不呢?
public MathEquation(char opCode , double leftVal , double rightVal)
{
this.opCode = opCode
this.leftVal = leftVal;
this.rightVal = rightVal;
}
答案 0 :(得分:7)
因为出于某种原因,如果你需要用opCode做更多的事情(比如在存储之前把它变成大写,或者在某个范围内检查它,或者类似的东西),你就不必重复那个两个构造函数中的代码。一个人只会调用已经写在另一个中的代码。
这个一般原则叫做DRY:不要重复自己。
请注意,它通常是在另一个方向上进行的:最简单的构造函数调用最复杂的构造函数,指定要为缺少的参数传递的默认值:
public MathEquation(char opCode) {
this(opCode, 0.0, 0.0);
}
答案 1 :(得分:2)
关键是:您希望最小化构造函数所做的不同工作量。
从这个角度来看,最佳解决方案是一个arg构造函数调用3 arg构造函数(使其也明确应该为其他两个参数使用哪些默认值)!当你这样做时,只有一个构造函数做某事 - 而在你的例子中,3个arg构造函数执行并且调用另一个构造函数。
含义:问题中使用的形式都不理想。
答案 2 :(得分:1)
遵守
S - 单一责任原则
O - 开放原则
以下构造函数仅负责一个操作,如果将来要扩展功能,则可以轻松完成。
public MathEquation(char opCode)
{
this.opCode = opCode;
//new functionality
}