Junior
136
questionbank
В чем разница между методами private и protected?
Ответ от нейросети
sobes.tech AI
private - доступен только внутри текущего класса.
protected - доступен внутри текущего класса и в классах-наследниках.
| Модификатор | Доступность внутри класса | Доступность в классах-наследниках | Доступность вне иерархии классов |
|---|---|---|---|
private |
Да | Нет | Нет |
protected |
Да | Да | Нет |
Пример:
public class BaseClass // Базовый класс
{
private int privateField; // Поле, доступное только в BaseClass
protected int protectedField; // Поле, доступное в BaseClass и DerivedClass
private void PrivateMethod()
{
// Доступ к privateField и protectedField
}
protected void ProtectedMethod()
{
// Доступ к privateField и protectedField
}
}
public class DerivedClass : BaseClass // Класс-наследник
{
public void AccessMembers()
{
// Нет доступа к privateField
// base.privateField; // Ошибка компиляции
// Доступ к protectedField
base.protectedField = 10;
this.protectedField = 20;
// Нет доступа к PrivateMethod()
// base.PrivateMethod(); // Ошибка компиляции
// Доступ к ProtectedMethod()
base.ProtectedMethod();
this.ProtectedMethod();
}
}
public class OtherClass // Другой класс вне иерархии
{
public void AccessBaseClassMembers()
{
BaseClass baseObj = new BaseClass();
// Нет доступа к privateField
// baseObj.privateField; // Ошибка компиляции
// Нет доступа к protectedField
// baseObj.protectedField; // Ошибка компиляции
// Нет доступа к PrivateMethod()
// baseObj.PrivateMethod(); // Ошибка компиляции
// Нет доступа к ProtectedMethod()
// baseObj.ProtectedMethod(); // Ошибка компиляции
}
}