【发布时间】:2011-06-15 05:22:43
【问题描述】:
无法通过直接调用abstract 类的构造函数来创建对象。 abstract 类的构造函数只能从派生类中调用。因此 似乎 在我看来,抽象类的构造函数必须是 protected 或包私有(后者用于将构造函数的使用限制在包内的派生类的特殊情况下)。然而,Java 允许 abstract 类的构造函数为 public。
在任何情况下有用将abstract 类的构造函数声明为public,而不是protected 或包私有?
这不是问题“Abstract class constructor access modifier”的完全重复:显然你可以将构造函数声明为public;我想知道是否有任何好的理由这样做。在我看来,没有。我看到了C# has a similar peculiarity。
【问题讨论】:
-
构造函数与对象的“创建”无关。它只是一种在“创建”对象时调用的方法。因此,抽象类可以具有在创建抽象类实例(通过子类)时调用的公共构造函数,并且在该构造函数方法中,您将编写代码来初始化成员变量。 stackoverflow.com/questions/260666/…
-
构造函数也可以是
private,可以在构造函数链中使用。
标签: java constructor abstract-class