构造链

Sha*_*liX 2 java constructor

为什么我们使用这个表格?(这是关于Java的复数视线的课程)

public MathEquation(char opCode)
    {
        this.opCode = opCode;
    }

public MathEquation(char opCode , double leftVal , double rightVal)
    {
        this(opCode);
        this.leftVal = leftVal;
        this.rightVal = rightVal;
    }
Run Code Online (Sandbox Code Playgroud)

为什么不呢?

public MathEquation(char opCode , double leftVal , double rightVal)
    {
        this.opCode = opCode
        this.leftVal = leftVal;
        this.rightVal = rightVal;    
    }
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 7

因为出于某种原因,如果你需要用opCode做更多的事情(比如在存储它之前把它变成大写,或者在某个范围内检查它,或者类似的东西),你就不必在两个构造函数.一个人只会调用已经写在另一个中的代码.

这个一般原则叫做DRY:不要重复自己.

请注意,它通常是在另一个方向上进行的:最简单的构造函数调用最复杂的构造函数,指定要为缺少的参数传递的默认值:

public MathEquation(char opCode) {
    this(opCode, 0.0, 0.0);
}
Run Code Online (Sandbox Code Playgroud)