Видимость членов класса и модификаторы доступа

Видимость членов класса и модификаторы доступа

Каждое поле, метод или свойство класса имеет модификатор (атрибут) доступа, задающий правила его видимости. В PascalABC.NET существуют четыре вида модификаторов доступа: public (открытый), private (закрытый), protected (защищенный) и internal (внутренний). К члену класса, имеющему атрибут public, можно обратиться из любого места программы, члены класса с атрибутом private доступны только внутри методов этого класса, члены класса с атрибутом protected доступны внутри методов этого класса и всех его подклассов, члены класса с атрибутом internal доступны внутри сборки (термин .NET, сборка в нашем понимании - это множество файлов, необходимых для генерации .exe или .dll-файла). Кроме того, private и protected члены видны отовсюду в пределах модуля, в котором определен класс.

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

Например, пусть данный код располагается в одном модуле:

type

A = class

private

x: integer;

protected

a: integer;

public

constructor Create(xx: integer)

begin

x := xx; // верно, т.к. внутри метода класса можно обращаться к его закрытому полю x

a := 0; // верно

end;

;

Следующий же код пусть располагается в другом модуле: type

B = class(A)

public

procedure print;

begin

writeln(a); // верно, т.к. a - защищенное поле

writeln(x); // неверно, т.к. х - закрытое поле

end;

end;

...

var b1: B := new B(5);

...

writeln(b1.x); // неверно, т.к. х - закрытое поле

writeln(b1.a); // неверно, т.к. a - защищенное поле

b1.print; // верно, т.к. print - открытый метод

Комментарии по тексту программы описывают верное и неверное в смысле доступа обращение к полям и методам.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

8.5.9 Видимость Имен Членов

Из книги Интерфейс: новые направления в проектировании компьютерных систем автора Раскин Джефф

8.5.9 Видимость Имен Членов Члены класса, описанные с ключевым словом class, являюся закрытыми, то есть, их имена могут использоваться только функциями членами (#8.5.2) и друзьями (см. #8.5.10), если они не стоят после метки «public:». В этом случае они являются открытыми. Открытый член


Специализация шаблонных функций – членов шаблонного класса

Из книги Delphi. Учимся на примерах автора Парижский Сергей Михайлович

Специализация шаблонных функций – членов шаблонного класса К сожалению, вышеприведенный код не будет компилироваться на компиляторах, не поддерживающих специализацию шаблонов-функций – членов шаблонов классов.ПРИМЕЧАНИЕ К таким относятся, например, gcc-2.95 и gcc-2.96


Определение членов класса

Из книги 3ds Max 2008 автора Верстак Владимир Антонович

Определение членов класса Все члены класса по характеру доступа к ним делятся на четыре категории: закрытые (private), защищенные (protected), открытые (public) и опубликованные (published).Элементы класса, определенные в разделе public, без каких-либо ограничений открыты для доступа извне


Модификаторы геометрии

Из книги 3ds Max 2008 для дизайна интерьеров автора Семак Рита

Модификаторы геометрии Для изменения параметров объектов сцены в среде 3ds Max служит панель Modify (Изменение). Она содержит список модификаторов, позволяет управлять стеком модификаторов и редактировать подобъекты.Каждый модификатор привносит в моделирование большое


Модификаторы

Из книги Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT автора Фролов Александр Вячеславович

Модификаторы В предыдущей главе мы начали знакомиться с модификаторами и научились применять их к сплайнам. Однако модификаторы можно назначать не только двухмерным формам, но и трехмерным. Например, модификатор может действовать на объект, деформируя его различными


Параметрические модификаторы

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

Параметрические модификаторы Каждый из параметрических модификаторов содержит два режима редактирования подобъектов: Gizmo (Габаритный контейнер) и Center (Центр).Управление положением габаритного контейнера модификатора (Gizmo) осуществляется при помощи специального


Разграничение доступа к элементам класса

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Разграничение доступа к элементам класса Определив класс, вы можете создавать объекты этого класса и манипулировать ими, используя методы. Некоторые данные и методы, объединенные одним классом, можно сделать недоступными вне реализации класса, к другим можно будет


Разграничение доступа к элементам базового класса

Из книги C++. Сборник рецептов автора Диггинс Кристофер

Разграничение доступа к элементам базового класса Мы уже рассказывали, что можно управлять доступом к элементам класса, указывая спецификаторы доступа для элементов класса. Элементы класса, объявленные с спецификаторами protected и private доступны только из методов самого


3.11. Внутренние модификаторы

Из книги Первые шаги с Windows 7. Руководство для начинающих автора Колисниченко Денис Н.

3.11. Внутренние модификаторы Обычно модификаторы (например, i или m) задаются после регулярного выражения. Но что если мы хотим применить модификатор только к части выражения?Существует специальная нотация для включения и выключения модификаторов. Заключенный в круглые


11.1.2. Модификаторы прав доступа к файлам

Из книги C++ для начинающих автора Липпман Стенли

11.1.2. Модификаторы прав доступа к файлам Модификаторы прав доступа файлов — это также битовые маски, значения которых представляют биты setuid, setgid и sticky-бит ("липкий" бит). Если бит setuid установлен для исполняемого файла, то эффективный идентификатор пользователя процесса


10.2.3. Модификаторы поиска

Из книги автора

10.2.3. Модификаторы поиска Возможности поиска в Google не ограничиваются применением логических операторов и операторов + и — . Вы можете использовать специальные модификаторы для более эффективного поиска. Например, модификатор site позволяет задать домен, в пределах


18.5.4. Видимость членов виртуального базового класса

Из книги автора

18.5.4. Видимость членов виртуального базового класса Изменим наш класс Bear так, чтобы он имел собственную реализацию функции-члена onExhibit(), предоставляемой также ZooAnimal: bool Bear::onExhibit() { ... }Теперь обращение к onExhibit() через объект Bear разрешается в пользу экземпляра, определенного в