Jon*_*eet 6

该类必须至少有一个构造函数,因为所有 Java类都有构造函数.此外,子类必须链接到它 - 所以它必须至少是protected可访问性.构造函数不需要任何事情,因此作者决定不提供明确的.现在,来自JLS 8.8.9:

默认构造函数与类具有相同的可访问性

这就是为什么public.它可以明确地提供为:

protected OutputStream() {
}
Run Code Online (Sandbox Code Playgroud)

...或者更好的是,JLS可以使得公共抽象类默认构造函数被隐式保护.但是,公开它并没有坏处.