java - 为什么执行构造函数中的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()。
解决方案
您确实使用 调用第一个构造函数this(null)
。要调用第二个无参数构造函数,您可以使用this()
.
但是,第二个构造函数仍然调用this(null)
,所以第一个构造函数将被调用。
关于 null 的事情是null 可以是任何东西,任何东西都可以是 null。
因此,通过调用this(null)
您正在传递一个 WeatherData,它只是 null(并且使用它会导致错误)。