public, private, protected, internal, protected internal, private protected задают видимость типов и членов.
Разбор
- internal — внутри сборки.
- protected — для наследников.
- private protected — наследники только в той же сборке.
- По умолчанию члены класса private.
Итог
Модификаторы — контракт инкапсуляции на уровне сборки и наследования.