Объектно-ориентированное программирование – основа создания большинства современных приложений. Оно поддерживает полиморфизм, наследование и абстрактные классы. А еще – инкапсуляцию.
В данной статье речь зайдет именно о ней. Также предстоит разобраться с так называемыми модификаторами доступа. Все это поможет новичкам быстрее освоить концепции объектно-ориентированного программирования. В качестве примеров используются 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;
}
}
Здесь:
- Можно не использовать public and protected.
- Метод Sum() применяется в Program, несмотря на то, что экземпляр Calc не создавался.
- Статичным можно сделать отдельный параметр или метод, а также весь 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!
![Инкапсуляция и модификаторы доступа](https://otus.ru/journal/wp-content/uploads/2022/07/C_970x90.png)