首页 > 解决方案 > 为什么执行构造函数中的calculate()?

问题描述

总之

WeatherCalculator calculator = WeatherCalculatorFactory.getInstance(Mode.valueOf(mode));

if(mode==Mode.DEW_POINT)
        {
            return new DewPointCalculator();
        }

public class DewPointCalculator extends WeatherCalculator{
    //default constructor
    public DewPointCalculator()
    {
        this(null);
    }

    public WeatherCalculator(WeatherData weatherData) { 
        this.weatherData = weatherData; 
        calculate(); //calculate overriding
    }
    public WeatherCalculator()
    {
        this(null);
    }

换行符都是不同的类。我想知道为什么在此处没有传递任何对象时执行构造函数中的calculate()。

标签: java

解决方案


您确实使用 调用第一个构造函数this(null)。要调用第二个无参数构造函数,您可以使用this().
但是,第二个构造函数仍然调用this(null),所以第一个构造函数将被调用。

关于 null 的事情是null 可以是任何东西,任何东西都可以是 null
因此,通过调用this(null)正在传递一个 WeatherData,它只是 null(并且使用它会导致错误)。


推荐阅读