상속 — 헬퍼 계층 만들기
상속 — 헬퍼 계층 만들기
이전 절에서 언급했듯이 헬퍼 클래스의 하위를 만드는 것이 가능해요. 현재 범위에서 마지막 헬퍼 클래스만 사용될 수 있으므로, 두 헬퍼의 메서드를 모두 사용해야 한다면 한 헬퍼 클래스를 다른 헬퍼에서 파생시키는 것이 필요해요. 이에 대해서는 이후 절에서 더 다뤄요.
본문
클래스 헬퍼의 하위는 부모와 다른 클래스를 확장할 수 있어요. 다음은 TMyObject에 대한 유효한 클래스 헬퍼예요.
TObjectHelper = class helper for TObject
procedure SomeMethod;
end;
TMyObject = class(TObject)
end;
TMyObjectHelper = class helper(TObjectHelper) for TMyObject
procedure SomeOtherMethod;
end;
TMyObjectHelper는 TObjectHelper에서 파생됐지만 TObject 클래스를 확장하는 게 아니라, 오직 TMyObject 클래스만 확장해요.
레코드는 상속을 모르기 때문에 레코드 헬퍼의 하위는 같은 레코드만 확장할 수 있음이 당연해요.
Remark 최대 Delphi 호환을 위해 Delphi 모드에서는 레코드 헬퍼의 하위를 만들 수 없어요.
핵심은 클래스 헬퍼는 부모 헬퍼가 확장하는 클래스와 다른 클래스를 확장할 수 있지만, 레코드 헬퍼는 (레코드에 상속이 없으므로) 반드시 같은 레코드 타입을 확장해야 한다는 거예요.
더 알아보기
- 헬퍼의 기본 개념은 Definition을 참고하세요
- 헬퍼 사용 시 scope 규칙은 A note on scope and lifetime에서 다뤄요
- 헬퍼를 실제로 쓰는 방법은 Usage를 참고하세요