필드
필드 (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;
이 예시에서 begin과 end 사이에서는 AnObject가 Afield와 Amethod 식별자 앞에 붙은 것처럼 동작해요. 자세한 내용은 13.2.8절(725쪽)에서 다뤄요.