【发布时间】:2015-11-21 00:50:59
【问题描述】:
我有一个抽象类MousableActor,它扩展了一个具体类Actor:
public abstract class MousableActor extends Actor
{
/**
* Constructs a MousableActor.
*/
protected void MousableActor()
{
}
}
当我查看为该类生成的 javadoc 时,我看到了一个公共的无参数构造函数:
如果一个类不包含构造函数声明,则隐式声明一个没有形式参数且没有 throws 子句的默认构造函数。
我一直认为这是一个 if-and-only-if。即使我明确声明了受保护的构造函数,为什么还要创建公共默认构造函数?是否与 the superclass 有一个公共的无参数构造函数有关?
我在 Java 1.8.0 之上使用 Greenfoot 版本 2.4.2(应该没关系)。
【问题讨论】:
-
如果您使用了一个好的 IDE,它会告诉您有问题,例如Eclipse 显示警告“此方法具有构造函数名称”。
-
很好很清楚的问题,付出了很多努力,虽然解决方案有点尴尬:)
-
@zapl 对于像我这样的 CS 教授来说,谦逊的教训总是有益的。我的学生喜欢听到我的错误,这让他们对自己的错误感觉更好。
-
我们应该添加标签pebcak吗?
标签: java constructor default-constructor