通过直接调用abstract
类的构造函数来创建对象是不可能的.abstract
只能从派生类中调用类的构造函数.因此,在我看来,抽象类的构造函数必须是或者是protected
私有的(后者用于限制将构造函数用于包中的派生类的异常情况).然而,Java允许abstract
类的构造函数public
.
有没有在它是任何情况下有用申报的构造函数abstract
的类要public
,而不是protected
或包专用?
这与" 抽象类构造函数访问修饰符 " 这个问题并不完全相同:显然你可以声明一个构造函数public
; 我想知道是否有过任何好的理由这样做.在我看来,没有.我看到C#具有类似的特性.
这个问题出于好奇.是否有区别:
public abstract class MyClass
{
public MyClass()
{
}
}
Run Code Online (Sandbox Code Playgroud)
和
public abstract class MyClass
{
protected MyClass()
{
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢.