Привет, народ!

В этой истории будет обсуждаться Цель 2.3: Обеспечение инкапсуляции! Надеюсь, вам это понравится.

В последнем рассказе была представлена ​​Задача 2.2: Типы потребления.

Все коды для сертификационных серий можно найти здесь.

Вступление

Во-первых, стоит кратко определить, что означает инкапсуляция. В конце концов, это и есть цель, верно?

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

Чтобы гарантировать это, C # предлагает некоторые модификаторы доступа, которые можно подключить к классам, методам, полям и свойствам. Кроме того, C # предлагает свойства, которые позволяют добавлять настраиваемую логику при доступе или изменении информации о классе, содержащейся в этом свойстве.

Использование модификаторов доступа

Существующие модификаторы доступа в C #:

  • общедоступный: без ограничений доступа.
  • внутренний: ограничен сборкой, в которой он содержится.
  • protected: ограничивается содержащим классом и любыми производными классами.
  • protected internal: используется логический оператор ИЛИ для значений protected и internal.
  • частный: только содержащий его класс.

Пример кода:

В приведенном выше коде показано использование открытых методов доступа в классах Person и Employee. В этом случае некоторая информация, такая как Id и E-mail человека, соответственно доступна только самому классу и производному классу.

Свойства будут объяснены далее.

Использование свойств

Свойства позволяют владельцу класса добавлять логику для получения или обновления значения (называемые аксессорами), чего невозможно достичь при использовании полей.

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

Пример кода:

В приведенном выше коде к доступу получить и установить добавлена ​​некоторая логика, чтобы соответственно отображать форматированное значение и гарантировать, что правильный диапазон значений используется для установки значения Salary свойство. Свойство Salary представляет собой строку, а фактическое значение хранится в частном поле. В реальном примере необходимо было бы проверить, действительна ли строка, прежде чем анализировать ее на double. Вы можете узнать больше о выполнении конверсий в последней истории

Использование явных реализаций интерфейса

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

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

Чтобы иметь возможность вызывать методы реализации для каждого интерфейса отдельно, C # позволяет разработчику явно реализовать метод интерфейса. Чтобы использовать явные реализации интерфейса, необходимо выполнить приведение к интерфейсу.

Пример кода:

В приведенном выше коде показано, как явно реализовать метод Drive интерфейсов ITruckDriver и ICarDriver с помощью Driver класс.

На этом пока все! Я надеюсь, что вы узнали хоть что-то полезное, независимо от того, учитесь ли вы, чтобы сдать сертификационный экзамен, или просто хотите узнать больше о C #.

Увидимся в следующем рассказе, где я буду обсуждать Цель 2.4: Создание и реализация иерархии классов!

PS: Если вы найдете эту историю полезной, я приглашаю вас нажать кнопку Clap. Также буду рад видеть Вас в качестве моего нового последователя!