필드

필드 (Fields)

객체 필드는 레코드 필드와 비슷해요. 레코드 필드에 접근하듯 **정규화된 식별자(qualified identifier)**로 접근합니다. 아래 선언을 볼게요.

출처: Fields

본문

Type TAnObject = Object
      AField : Longint;
      Procedure AMethod;
      end;

Var AnObject : TAnObject;

그러면 다음은 유효한 대입이에요.

AnObject.AField := 0;

메서드 안에서는 짧은 식별자로 필드에 접근할 수 있어요.

Procedure TAnObject.AMethod;
begin
  ...
  AField := 0;
  ...
end;

또는 self 식별자를 쓸 수도 있어요. self는 객체의 현재 인스턴스를 가리킵니다.

Procedure TAnObject.AMethod;
begin
  ...
  Self.AField := 0;
  ...
end;

객체의 메서드 바깥에서는 객체의 private나 protected 섹션에 있는 필드에 접근할 수 없어요. 그래도 접근하려 하면 컴파일러가 알 수 없는 식별자라고 불평합니다.

레코드에서처럼 객체 인스턴스에도 with 문을 쓸 수 있어요.

With AnObject do
  begin
  Afield := 12;
  AMethod;
  end;

이 예시에서 beginend 사이에서는 AnObjectAfieldAmethod 식별자 앞에 붙은 것처럼 동작해요. 자세한 내용은 13.2.8절(725쪽)에서 다뤄요.

더 알아보기