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(这应该不重要).
构造函数不是void方法.
protected void MousableActor()
Run Code Online (Sandbox Code Playgroud)
应该
protected MousableActor()
Run Code Online (Sandbox Code Playgroud)