我有延伸的具體類Actor
一個抽象類MousableActor
:即使我的抽象類具有受保護的構造函數,爲什麼會創建默認構造函數?
public abstract class MousableActor extends Actor
{
/**
* Constructs a MousableActor.
*/
protected void MousableActor()
{
}
}
當我看到該類生成javadoc的,我看到一個公共的無參數的構造:
如果一個類不包含構造函數聲明,那麼默認的構造函數沒有形式參數也沒有引發子句是隱式聲明的。
我一直認爲if-and-only-if。爲什麼即使我明確聲明瞭一個受保護的構造函數,也會創建一個公共的默認構造函數?它與the superclass有一個公共的無參數構造函數有關嗎?
我在Java 1.8.0之上使用Greenfoot版本2.4.2(這應該不重要)。
如果您使用過良好的IDE,它會告訴您存在問題,例如Eclipse顯示警告「此方法具有構造函數名稱」。 – Andreas
好的和明確的問題,很多努力,雖然解決方案有點尷尬:) – zapl
@zapl謙遜的教訓對我這樣的CS教授來說總是有益的。我的學生喜歡聽到我的錯誤,這讓他們感覺更好。 –