안녕하세요..델초보 어린왕자인데요..
예제 소스 분석하면서..궁금한점이 있어서 질문해요..
TObject.Create
constructor Create;
TComponent.Create
constructor Create(AOwner: TComponent); virtual;
TControl.Create
constructor Create(AOwner: TComponent); override;
TWinControl.Create
위의 메소드와 같음
TCustomListBox.Create
위의 메소드와 같음
TListBox.Create
위의 메소드와 같음
TThread.Create
constructor Create(CreateSuspended: Boolean);
근데서 여기서 override와 virtual이 어떻게 쓰이는 지 설명 부탁합니다..
여러책을 봤는데..이해가 제대루 안돼서요..
예를 들어
TControl.Create
constructor Create(AOwner: TComponent); override;
는 부모클래스(TComponent)의 Create의 메소드에서 어떻게 바뀐다는 말인가요..
저가 알기로는 override는 인수형태가 변할때 쓰는 키워드로 알고 있는데..
..고수님의 친절한 설명 부탁합니다..
그리구 마지막 질문인데요..
type
TFieldListBox = Class (TListBox)
constructor Create(AOwner: TComponent);override
end;
var TotBtns:integer;
...
constructor TFieldListBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner); // 이문장은 override 없으면 실행하지 않음
Inc(TotBtns); // 리스트박스 카운트
end;
이런소스에서 override키워드를 빼면 inherited~문장이 실행을 하지 않더라구요.
왜그런건지..
type
TQueryThread = class(TThread)
private
QueryForm: TQueryForm;
MessageText: string;
procedure ConnectQuery;
procedure DisplayMessage;
protected
procedure Execute; override;
public
constructor Create(AQueryForm: TQueryForm);
end;
...
constructor TQueryThread.Create(AQueryForm: TQueryForm);
begin
QueryForm := AQueryForm;
FreeOnTerminate := True;
inherited Create(False); // 위의 예제와 같다면 이문장은 실행되지 않는 건가요?
end;
고수님의 친절한 설명 부탁해요..
그럼..즐코딩되세요..