为什么即使我的抽象类有受保护的构造函数,也会创建默认构造函数?

Ell*_*tus 1 java constructor default-constructor

我有一个MousableActor扩展具体类的抽象类Actor:

public abstract class MousableActor extends Actor
{   
    /**
     * Constructs a MousableActor.
     */
    protected void MousableActor()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

当我查看为该类生成的javadoc时,我看到一个公共的无参数构造函数: 在文中描述

根据JLS第8.8.9节:

如果类不包含构造函数声明,则隐式声明没有形式参数且没有throws子句的默认构造函数.

我一直认为这是一个if-and-only-if.为什么即使我显式声明了受保护的构造函数,也会创建公共默认构造函数?它是否与具有公共no-args构造函数的超类有关

我在Java 1.8.0之上使用Greenfoot版本2.4.2(这应该不重要).

Ell*_*sch 5

构造函数不是void方法.

protected void MousableActor()
Run Code Online (Sandbox Code Playgroud)

应该

protected MousableActor()
Run Code Online (Sandbox Code Playgroud)