抽象类:单一构造函数,访问修饰符?

4
我有以下代码片段:
public abstract class Foo
{
    protected Foo()
}

有没有在使用protected作为访问修饰符和public之间的继承方面的区别? 我大多数情况下看到的是使用protected。 那么有什么区别,为什么人们会选择使用protected而不是public?
2个回答

6

可能有一些微妙的情况,它们会有所不同(并且通过反射是可以检测到的),但本质上它们是相同的。将其设置为protected可能更清晰,因为它只能由派生类的构造函数调用。


2

一个区别是,如果您计划对类进行序列化,则必须具有默认的public构造函数(默认意味着构造函数不带参数)。否则,像Jon所说,差异很小。


这在我正在编写的应用程序中扮演着一个角色,我的问题也由此产生。非常有趣,谢谢! - kamahl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接