抽象类只能用作由其他类扩展的基类,对吧?抽象类的构造函数可以具有通常的访问修饰符(public,protected和private(供内部使用)).使用哪个protected和哪个public正确的访问修饰符,因为抽象类型似乎表明技术上公共构造函数将受到很大程度的保护?我应该在所有构造函数上使用protected吗?
在抽象类中是否存在"公共"构造函数的相关性?我想不出任何可能的方法来使用它,在这种情况下不应该被编译器视为错误(C#,不确定其他语言是否允许).
示例代码:
internal abstract class Vehicle
{
public Vehicle()
{
}
}
Run Code Online (Sandbox Code Playgroud)
C#编译器允许这个代码编译,而我无法从外部世界调用这个构造函数.它只能从派生类中调用.所以不应该只允许'protected'和'private'修饰符.请评论.
由于抽象类无法实例化,并且由于受保护的成员始终对子类可见,因此它的构造函数是公共的还是受保护的似乎没有区别.
有没有公共构造函数与受保护构造函数相比可以有所作为的示例?我通常更喜欢适用的限制性最强的访问级别.