Объектно-ориентированное программирование – основа создания большинства современных приложений. Оно поддерживает полиморфизм, наследование и абстрактные классы. А еще – инкапсуляцию.

В данной статье речь зайдет именно о ней. Также предстоит разобраться с так называемыми модификаторами доступа. Все это поможет новичкам быстрее освоить концепции объектно-ориентированного программирования. В качестве примеров используются C# и Java. Связано это с широким распространением соответствующих ЯП.

Инкапсуляция – это…

Инкапсуляция – заключение данных и функций в оболочки. В ООП в качестве последнего компонента выступают классы. Они собирают переменные и методы в одном месте, после чего защищают их от вмешательства извне. В процессе реализации «средства защиты» происходит сокрытие информации.

Методы позволяют контролировать обращение к данным, а также предотвратить их удаление или некорректное изменение. Пример – запретить присваивать полю «возраст» объекта «Клиент» число большее 120.

Основные модификаторы

Методы доступа к полям изменяются в зависимости от выбранного языка программирования. Основными вариантами для классов объектов программного кода выступают:

  • public;
  • protected;
  • private;
  • internal.

У каждого ЯП свои «дополнительные» модификаторы. Так называют специфичную часть языков программирования для облегчения инкапсуляции. Ключевые слова в ООП, которые задают параметры доступа для классов, методов и иных объектов кода.

Private

Это закрытый или «приватный» элемент класса или структуры. Он будет доступен только в пределах собственного класса. Для того чтобы объявить такой модификатор, нужно использовать ключевое слово private.

При его применении относящиеся к «приватному» типу доступа поля нельзя изменять нигде, кроме как в methods того или иного класса. Значение извне получить тоже не представляется возможным. При попытках это сделать система выведет на экран ошибку. Для устранения неполадки можно использовать:

  • ключевое слово readonly, но оно запрещает корректировать значение;
  • передачу значения «приватного» члена класса через публичный.

В C# применяется третья концепция – это свойства.

Инкапсуляция и модификаторы доступа
Инкапсуляция и модификаторы доступа

Также есть private protected. Компонент класса будет доступен из любого места в своем классе или в производных классах, определенных в той же сборке. Private protected используется в C#. В случае с Java применяется только ключевое слово «протектед».

Internal

Модификатор доступа internal делает элементы класса доступными из любого места в той же сборке, но он будет недоступен для других приложений и сборок. Если говорить простым языком, то компонент можно получить только в пределах одного файла.

Инкапсуляция и модификаторы доступа

Здесь класс Backpack используется только в пределах файла Program.cs. Если попытаться объявить его внутри другого файла, возникнет ошибка.

Public

Public и protected являются схожими. Второй модификатор доступа отвечает за элементы, доступные из любого места в пределах конкретного класса и его производных. Последние могут располагаться в других сборках.

Public – это самый простой модификатор. С ним сталкиваются все программисты. Называется «публичным» или «общедоступным». Разница с «протектед» очевидна – компонент будет доступен по всему коду. А еще – из других программ и сборок.

Для работы с таким вариантом используется ключевое слово public. Вот – пример приложения с class Item:

Public class Item;

{

Public string name;

Public void cost;

Public item (string name, void cost)

{

this.name = name;

this.cost = cost;

}

}

Если объявить экземпляр class, можно обратиться к любым его полям в любом месте приложения. Главное, чтобы сам объект был доступен. 

Static

Изучая модификаторы private, public и другие в заданном языке программирования, нужно обратить внимание на ключевое слово static.

Статичность – понятие, которое не совсем относится к уровням доступа. Оно помогает заключать реализацию функционала в оболочку класса. Статичность позволяет обращаться к методом или полям без создания объекта.

Пример:

class Program

{

    static void Main(string[] args)

    {

        Console.WriteLine($"5 + 6 = {Calc.Sum(5, 6)}");

    }

}

class Calc

{

    public static int Sum(int a, int b) //Здесь создается статичный метод

    {

        return a + b;

    }

}

Здесь:

  1. Можно не использовать public and protected.
  2. Метод Sum() применяется в Program, несмотря на то, что экземпляр Calc не создавался.
  3. Статичным можно сделать отдельный параметр или метод, а также весь class. Для этого все соответствующие элементы должны стать static.

Вместо private and protected используется static, когда требуется создать набор инструментов для его дальнейшего применения в других частях приложения.

Сравнительные таблицы

Каждая программа будет работать в зависимости от способа настройки модификаторов доступа. Эта таблица поможет лучше понять, чем отличается private от public и других спецификаторов:

Название модификатораГраницы видимостиКраткая характеристика
PublicДоступ всем и с любого местаДоступ к полям будут иметь все
PrivateДоступ «мне и только мне»Элементы доступны только class, в котором они объявлены
Package«Мне, а также всем в пределах пакета»Доступ будет иметь не только class, в котором объявлены поля и методы, но и все классы, относящиеся к тому же пакету
Protected«Мне и всем наследникам»Доступом обладает класс, в котором объявлены поля, а также все classes в пакете и потомки

Public and protected легко спутать, особенно новичкам.

Инкапсуляция и модификаторы доступа

Выше – таблица, которая поможет лучше разобраться с особенностями спецификаций C#. Они могут применяться как к компонентам class, так и к компонентам структуры. Во втором случае нельзя использовать private and protected, а также protected и protected internal. Связано это с тем, что структуры не поддерживают наследование. Здесь расположен видео-урок по изученной теме на примере Java.

Как освоить тему

Любой язык программирования предусматривает свои особенности и спецификации доступа. Чтобы лучше изучить private, public, static, new string и другие записи выбранного ЯП, рекомендуется закончить специализированные дистанционные компьютерные курсы. Пример – от OTUS. В данном образовательном центре можно быстро освоить инновационные IT-профессии, а также современные языки разработки с нуля.

В процессе обучения пользователям будет предоставлено полноценное кураторство, оказана помощь в формировании собственного портфолио. Ученики в срок до года научатся создавать различные приложения на выбранном ЯП, а также работать со спецификациями. Приобретенные знания подтверждаются специальным электронным сертификатом. 

Добро пожаловать в Otus!

Инкапсуляция и модификаторы доступа