通过直接调用abstract
类的构造函数来创建对象是不可能的.abstract
只能从派生类中调用类的构造函数.因此,在我看来,抽象类的构造函数必须是或者是protected
私有的(后者用于限制将构造函数用于包中的派生类的异常情况).然而,Java允许abstract
类的构造函数public
.
有没有在它是任何情况下有用申报的构造函数abstract
的类要public
,而不是protected
或包专用?
这与" 抽象类构造函数访问修饰符 " 这个问题并不完全相同:显然你可以声明一个构造函数public
; 我想知道是否有过任何好的理由这样做.在我看来,没有.我看到C#具有类似的特性.
抽象类只能用作由其他类扩展的基类,对吧?抽象类的构造函数可以具有通常的访问修饰符(public,protected和private(供内部使用)).使用哪个protected
和哪个public
正确的访问修饰符,因为抽象类型似乎表明技术上公共构造函数将受到很大程度的保护?我应该在所有构造函数上使用protected吗?