Такой член класса доступен в текущем классе и в производных классах.
Производные классы могут располагаться в других сборках.
Такой член класса НЕ ДОСТУПЕН для объекта класса.
Пример 1 (2 ошибки во время компиляции)
C#
class Book
{
// поле класса
protected string Name;
// метод класса
protected string GetInfo()
{
return "Название книги " + Name; // получаем значение из поля класса
}
}
class Program
{
static void Main(string[] args)
{
// создаем объект класса
Book book1 = new Book();
// устанавливаем значение для объекта класса
book1.Name = "aaa"; // Ошибка компиляции! Book.Name is inaccessible due to its protection level
// вызываем метод GetInfo
string str1 = book1.GetInfo(); // Ошибка компиляции! Book.GetInfo() is inaccessible due to its protection level
}
}
Пример 2 (наследование)
3 ошибки во время компиляции
C#
class Book
{
// поле класса
protected string Name;
// метод класса
protected string GetInfo()
{
return "Название книги " + Name; // получаем значение из поля класса
}
}
class ShowBook : Book
{
protected void Show()
{
string info = GetInfo(); // вызываем метод GetInfo из базового класса Book
Console.WriteLine(info);
}
}
class Program
{
static void Main(string[] args)
{
ShowBook book2 = new ShowBook();
// устанавливаем значение для объекта класса
book2.Name = "aaa"; // Ошибка компиляции! Book.Name is inaccessible due to its protection level
// вызываем метод GetInfo
string str2 = book2.GetInfo(); // Ошибка компиляции! Book.GetInfo() is inaccessible due to its protection level
// вызываем метод Show
book2.Show(); // Ошибка компиляции! ShowBook.Show() is inaccessible due to its protection level
}
}
class Program
{
static void Main(string[] args)
{
Book book = new Book();
book.SetName("Elon Mask");
book.SetPrice(300);
book.Info();
}
}
class Book
{
protected string Name;
protected int Price;
public Book()
{
}
public Book(string name, int price)
{
Name = name;
Price = price;
}
public void SetName(string name)
{
Name = name;
}
public void SetPrice(int price)
{
Price = price;
}
public void Info()
{
Console.WriteLine("Name is book: " + Name + "Price is Book: " + Price + "$");
}
}