Тема 10. Права доступа к элементам классов

Права доступа к элементам объекта

public - права доступа не ограничены; protected - права доступа открыты только для внутренних методов и наследников; private - права доступа открыты только для внутренних методов; internal - права доступа открыты только для доступа внутри одной сборки (библиотеки).

Пример:

class A
{
    void P1() { … };
    public void P2() { … };
    protected void P3() { … };
    private void P4() { … };
}

Использование в программе:

A obj = new A(); obj.P1(); // Ошибка – нет доступа извне. obj.P2(); // Ок – доступ есть. obj.P3(); // Ошибка – нет доступа извне. obj.P4(); // Ошибка – нет доступа извне.

Использование при наследовании:

class B : A
{
    public void PP()
    {
        P1(); // Ок – доступ есть.
        P2(); // Ок – доступ есть.
        P3(); // Ок – доступ есть.
        P4(); // Ошибка – нет доступа даже потомкам.
    };
}

Статические методы класса

static - описывает доступ к переменной/методу уровня класса.

Для доступа к таким элементам осуществляется без создания объекта.

Статические элементы класса – общие для всех объектов класса, а не для каждого в отдельности.

Из статического метода можно обращаться только к стаическим элементам класса.

class A
{
    public int I1;
    public static int I2;

    public void P1()
    {
        I1 = 3; // Ок – обращаться к переменной можно.
        I2 = 7; // Ок – обращаться к переменной можно.
    }

    public static void P2()
    {
        I1 = 3; // Ошибка – обращаться к переменной нельзя.
        I2 = 7; // Ок – обращаться к переменной можно.
    }
}

Использование в программе:

A obj = new A(); obj.I1 = 15; - Ок – обращаться к переменной можно. obj.I2 = 84; - Ошибка – обращаться к переменной нельзя.

A.I1 = 15; - Ошибка – обращаться к переменной нельзя. A.I2 = 84; - Ок – обращаться к переменной можно.

Дополнительная литература

https://msdn.microsoft.com/ru-ru/library/ms173121.aspx http://metanit.com/sharp/tutorial/3.2.php http://trubetskoy1.narod.ru/gunn/CSharp07.html Герберт Шилдт. Полное руководство C# 4., Вильямс, 2011, стр. 148-153

results matching ""

    No results matching ""