Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1064 of 1492 menu
◀ ▶

Модификатор protected

Ключевое слово protected разрешает обращаться к полю, свойству или методу из объявившего типа и из любого производного класса - в том числе из другой сборки. С кодом вне иерархии наследования такой член не виден, в отличие от public.

Синтаксис

protected тип поле; protected тип Метод() { }

Пример

Давайте прочитаем protected поле в методе производного класса:

using System; class BaseRow { protected string text = "abcde"; } class DerivedRow : BaseRow { public void Print() { Console.WriteLine(text); } } class Program { static void Main() { new DerivedRow().Print(); } }

Результат выполнения кода:

"abcde"

Пример

Давайте вызовем protected метод из наследника:

using System; class BaseCalc { protected int Step(int num) { return num + 1; } } class ChildCalc : BaseCalc { public void Run() { Console.WriteLine(Step(4)); } } class Program { static void Main() { new ChildCalc().Run(); } }

Результат выполнения кода:

5

Пример

Снаружи иерархии protected член недоступен - такой вызов не скомпилируется:

class BaseRow { protected string text = "abcde"; } class Program { static void Main() { var row = new BaseRow(); Console.WriteLine(row.text); } }

Доступ есть только внутри BaseRow и его наследников.

Смотрите также

  • модификатор private,
    который скрывает член только внутри типа
  • модификатор protected internal,
    который расширяет доступ до сборки
  • модификатор private protected,
    который сужает доступ наследниками в сборке
  • класс Object,
    от которого наследуют многие типы
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить