Операторы PASCAL ABC Видимость членов класса

  • docx
  • 11.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-00387.docx

Операторы 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 недоступно".