Из Википедии, бесплатной энциклопедии
  (Перенаправлено из спецификаторов доступа )
Перейти к навигации Перейти к поиску

Модификаторы доступа (или спецификаторы доступа ) - это ключевые слова в объектно-ориентированных языках, которые устанавливают доступность классов, методов и других членов. Модификаторы доступа - это особая часть синтаксиса языка программирования, используемая для облегчения инкапсуляции компонентов. [1]

В C ++ модификаторов доступа всего три. C # увеличивает их количество до шести, [2] в то время как Java имеет четыре модификатора доступа, но для этой цели три ключевых слова. В Java без ключевого слова по умолчанию используется модификатор package-private.

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

Названия ключевых слов [ править ]

C ++ использует три модификатора называется public, protectedи private. [3] С # имеет модификаторы public, protected , internal, private, protected internal, и private protected. Java имеет public, package, protectedи private. Модификатор доступа packageиспользуется по умолчанию, если отсутствует какое-либо другое ключевое слово модификатора доступа. Значение этих модификаторов может отличаться от одного языка к другому. Ниже приводится сравнение ключевых слов, упорядоченных от наиболее строгих к наиболее открытым, и их значения на этих трех языках. Их видимость варьируется от того же класса до пакета, в котором класс определен, до общего разрешения доступа. Ниже максимальный доступ записан в таблицу.

В Swift существует пять различных уровней доступа относительно как исходного файла, в котором определена сущность, так и модуля, содержащего этот исходный файл. [4]

Пример на C ++ [ править ]

#include  <iostream>#include  <conio.h>используя  std :: cout ; используя  std :: endl ;struct  B  {  // модификатор доступа по умолчанию внутри struct public  void  set_n ( int  v )  {  n  =  v ;  }  void  f ()  {  cout  <<  "B :: f"  <<  endl ;  }  protected :  int  m ,  n ;  // B :: m, B :: n защищены  private :  int  x ; }; struct  D  :  B  {  с использованием  B :: m ;  // D :: m является общедоступным  int  get_n ()  {  return  n ;  }  // B :: n доступен здесь, но не за пределами // int get_x () {return x; } // ОШИБКА, B :: x недоступен здесь  private :  using  B :: f ;  // D :: f является закрытым }; int  main ()  {  D  d ;// dx = 2; // ОШИБКА, частный // dn = 2; // ОШИБКА, защита  d . m  =  2 ;  // защищенный B :: m доступен как D :: m d . set_n ( 2 );  // вызывает B :: set_n (int)  cout  <<  d . get_n ()  <<  endl ;  // вывод: 2// df (); // ОШИБКА, B :: f недоступен как D :: f B &  b  =  d ;  // b ссылается на d и "рассматривает" его как тип B// bx = 3; // ОШИБКА, частный // bn = 3; // ОШИБКА, защита // bm = 3; // ОШИБКА, B :: m защищен б . set_n ( 3 );  // вызывает B :: set_n (int) // cout << b.get_n (); // ОШИБКА, 'struct B' не имеет члена с именем 'get_n' б . f ();  // вызывает B :: f ()  return  0 ; }

Ссылки [ править ]

Заметки [ править ]

  1. Перейти ↑ Mayo 2002 , pp. 199.
  2. ^ Вагнер, Билл . «Модификаторы доступа - Руководство по программированию на C #» . docs.microsoft.com . Проверено 13 января 2020 . CS1 maint: обескураженный параметр ( ссылка )
  3. ^ "Спецификаторы доступа" . en.cppreference.com . Проверено 13 января 2020 .
  4. ^ «Контроль доступа - язык программирования Swift (Swift 5.3)» . docs.swift.org . Проверено 8 февраля 2021 .

Библиография [ править ]