Модификатор 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,
от которого наследуют многие типы