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

本文关键字:访问 单个 构造函数 抽象类 | 更新日期: 2023-09-27 18:27:37

我有以下代码片段:

public abstract class Foo
{
    protected Foo()
}

使用protected作为访问修饰符和使用public在继承方面有什么区别吗?

我经常看到在这种情况下使用protected。所以有区别,为什么人们使用protected而不是public?

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

在某些微妙的情况下,可能会产生影响(通过反射可以检测到),但本质上是一样的。让它成为protected可能更清楚,因为它实际上不能被派生类的构造函数调用。

一个区别是,如果您计划序列化类,那么您必须有一个默认的public构造函数(默认值意味着该构造函数不带参数)。否则,就像乔恩说的那样,差别很小。