为什么即使我的抽象 class 具有受保护的构造函数,也会创建默认构造函数?
Why is a default constructor created even though my abstract class has a protected constructor?
我有一个抽象 class MousableActor
扩展了具体 class Actor
:
public abstract class MousableActor extends Actor
{
/**
* Constructs a MousableActor.
*/
protected void MousableActor()
{
}
}
当我查看为 class 生成的 javadoc 时,我看到一个 public 无参数构造函数:
If a class contains no constructor declarations, then a default constructor with no formal parameters and no throws clause is implicitly declared.
我一直认为这是一个当且仅当的条件。为什么即使我显式声明了受保护的构造函数,也会创建 public 默认构造函数?它与 the superclass 具有 public 无参数构造函数有关吗?
我在 Java 1.8.0.
之上使用 Greenfoot 版本 2.4.2(应该无关紧要)
构造函数不是 void
方法。
protected void MousableActor()
应该是
protected MousableActor()
因为它返回 void
,所以它不是构造函数;它是一个方法,所以没有构造函数,并且创建了默认构造函数。
如果您打算将其作为构造函数,则删除 void
.
我有一个抽象 class MousableActor
扩展了具体 class Actor
:
public abstract class MousableActor extends Actor
{
/**
* Constructs a MousableActor.
*/
protected void MousableActor()
{
}
}
当我查看为 class 生成的 javadoc 时,我看到一个 public 无参数构造函数:
If a class contains no constructor declarations, then a default constructor with no formal parameters and no throws clause is implicitly declared.
我一直认为这是一个当且仅当的条件。为什么即使我显式声明了受保护的构造函数,也会创建 public 默认构造函数?它与 the superclass 具有 public 无参数构造函数有关吗?
我在 Java 1.8.0.
之上使用 Greenfoot 版本 2.4.2(应该无关紧要)构造函数不是 void
方法。
protected void MousableActor()
应该是
protected MousableActor()
因为它返回 void
,所以它不是构造函数;它是一个方法,所以没有构造函数,并且创建了默认构造函数。
如果您打算将其作为构造函数,则删除 void
.