我有一个抽象类MousableActor
,它扩展了一个具体的类Actor
:
public abstract class MousableActor extends Actor
{
/**
* Constructs a MousableActor.
*/
protected void MousableActor()
{
}
}
当我查看为该类生成的javadoc时,我看到一个公共的无参数构造函数:
如果一个类不包含构造函数声明,则隐式声明一个没有形式参数且没有throws子句的默认构造函数。
我一直认为这是一个if-and-only-if。为什么即使我显式声明了受保护的构造函数,也会创建公共默认构造函数?它是否与the superclass具有公共no-args构造函数有关?
我在Java 1.8.0之上使用Greenfoot版本2.4.2(这应该不重要)。
答案 0 :(得分:5)
构造函数不是void
方法。
protected void MousableActor()
应该是
protected MousableActor()
答案 1 :(得分:2)
因为它正在返回void
,所以它不是构造函数;它是一个方法,因此没有构造函数,并且创建了默认构造函数。
如果您打算将其作为构造函数,请删除void
。