Что такое публичное, частное и защищенное в объектно-ориентированном программировании?

Что такое публичное, частное и защищенное в объектно-ориентированном программировании?

7 ответов

Решение

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

private - Только текущий класс будет иметь доступ к полю или методу.

protected - Только текущий класс и подклассы (а иногда и классы одного пакета) этого класса будут иметь доступ к полю или методу.

public - Любой класс может ссылаться на поле или вызывать метод.

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

На самом деле это не концепты, а конкретные ключевые слова, которые обычно встречаются (с немного другой семантикой) в популярных языках, таких как C++ и Java.

По сути, они предназначены для того, чтобы позволить классу ограничить доступ к членам (полям или функциям). Идея состоит в том, что чем меньше одному типу разрешен доступ к другому типу, тем меньше можно создавать зависимости. Это позволяет легко изменять доступ к объекту, не затрагивая объекты, которые к нему относятся.

Вообще говоря, общедоступный означает, что каждому разрешен доступ, закрытый означает, что доступ разрешен только членам одного класса, а защищенный означает, что членам подклассов также разрешен доступ. Тем не менее, каждый язык добавляет свои собственные вещи к этому. Например, C++ позволяет вам наследовать не публично. В Java также есть уровень доступа по умолчанию (пакет), и есть правила для внутренних классов и т. Д.

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

Как и выше, но качественно:

private - least access, best encapsulation
protected - some access, moderate encapsulation
public - full access, no encapsulation

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

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

Это модификаторы доступа. Все данные и функции (поведения) инкапсулированы или ограничены в единое целое, называемое классом. Чтобы получить доступ к свойствам и поведению класса, мы используем объекты. Но также важно решить, какое поведение или свойство должно быть раскрыто или должно оставаться доступным для всех классов, а какое поведение или свойство должно быть закрытым. Итак, в этом помогают модификаторы доступа, такие как public, private, protected и protected. Этот акт определения привилегии для класса, метода или свойства называется абстракцией.

Подводя итог, в объектно-ориентированном программировании все моделируется на классы и объекты. Классы содержат свойства и методы. Открытые, закрытые и защищенные ключевые слова используются для указания доступа к этим членам (свойствам и методам) класса из других классов или других.dll или даже других приложений.

Другие вопросы по тегам