Sobes.tech
Junior
134
questionbank

В чем разница между методами private и protected?

Answer from AI

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(); // Ошибка компиляции
    }
}