Операторы PASCAL ABC
Видимость членов класса
Каждое поле, метод или свойство класса имеет атрибут, называемый видимостью. В Pascal ABC существуют три типа атрибутов видимости: public (открытый), private (закрытый) и protected (защищенный). К члену класса, имеющему атрибут public, можно обратиться из любого места программы, члены класса с атрибутом private доступны только внутри методов этого класса, члены класса с атрибутом protected доступны внутри методов этого класса и всех его подклассов. Атрибуты видимости могут находиться внутри класса, при этом все дальнейшие члены приобретают этот атрибут. Например:
type
A=class
private
x: integer;
protected
a: integer;
public
constructor Create(xx: integer);
begin
x:=xx; // верно, т.к. мы внутри
метода класса, которому принадлежит закрытое поле x
a:=0; // верно
end;
procedure print;
end;
B=class(A)
procedure print;
begin
writeln(a); // верно, т.к. a - защищенное поле
writeln(x); // неверно, т.к. х - закрытое
поле
end;
end;
...
var a1: A;
...
writeln(a1.x); // неверно, т.к. х - закрытое поле
writeln(a1.a); // неверно, т.к. a - защищенное поле
a1.print; // верно, т.к. print - открытый метод
По умолчанию все члены являются открытыми. В частности, метод print класса B - открытый.
Если x - закрытый или защищенный член класса, то доступ к нему с использованием явного указания объекта невозможен: запись a.x вызовет ошибку при компиляции "поле x недоступно".
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.