상속 — 헬퍼 계층 만들기

상속 — 헬퍼 계층 만들기

이전 절에서 언급했듯이 헬퍼 클래스의 하위를 만드는 것이 가능해요. 현재 범위에서 마지막 헬퍼 클래스만 사용될 수 있으므로, 두 헬퍼의 메서드를 모두 사용해야 한다면 한 헬퍼 클래스를 다른 헬퍼에서 파생시키는 것이 필요해요. 이에 대해서는 이후 절에서 더 다뤄요.

출처: Inheritance — Free Pascal Reference

본문

클래스 헬퍼의 하위는 부모와 다른 클래스를 확장할 수 있어요. 다음은 TMyObject에 대한 유효한 클래스 헬퍼예요.

TObjectHelper = class helper for TObject
  procedure SomeMethod;
end;

TMyObject = class(TObject)
end;

TMyObjectHelper = class helper(TObjectHelper) for TMyObject
  procedure SomeOtherMethod;
end;

TMyObjectHelperTObjectHelper에서 파생됐지만 TObject 클래스를 확장하는 게 아니라, 오직 TMyObject 클래스만 확장해요.

레코드는 상속을 모르기 때문에 레코드 헬퍼의 하위는 같은 레코드만 확장할 수 있음이 당연해요.

Remark 최대 Delphi 호환을 위해 Delphi 모드에서는 레코드 헬퍼의 하위를 만들 수 없어요.

핵심은 클래스 헬퍼는 부모 헬퍼가 확장하는 클래스와 다른 클래스를 확장할 수 있지만, 레코드 헬퍼는 (레코드에 상속이 없으므로) 반드시 같은 레코드 타입을 확장해야 한다는 거예요.

더 알아보기