Sobes.tech
Back to questions
Junior — Middle
72

Чем отличаются модификаторы доступа protected и internal в языках программирования?

Companies where asked
ТОП КЕЙС

Answer from AI

sobes.tech AI

В C# модификаторы доступа protected и internal имеют разные области видимости:

  • protected — доступ разрешён внутри класса и во всех его производных классах, даже если они находятся в других сборках.
  • internal — доступ разрешён только внутри текущей сборки (assembly), то есть всем классам в одном проекте, но не из других сборок.

Также существует комбинированный модификатор protected internal, который позволяет доступ либо из производных классов, либо из текущей сборки.

Пример:

class BaseClass {
    protected void ProtectedMethod() { }
    internal void InternalMethod() { }
}

class DerivedClass : BaseClass {
    void Test() {
        ProtectedMethod(); // доступно
        InternalMethod();  // доступно, если в той же сборке
    }
}

class OtherClass {
    void Test() {
        var b = new BaseClass();
        // b.ProtectedMethod(); // ошибка, не наследник
        // b.InternalMethod();  // доступно, если в той же сборке
    }
}