상속(succession) 인터페이스(interface)
델파이에서는 클래스 다중상속이 안되기 때문에
보통 인터페이스 다중상속을 많이 사용한다.
원래 클래스 상속에서 기본적으로 배우는게 공통되는 기능을
상위클래스의 메소드로 만들고 하위클래스에서
그 메소드를 오버라이드 해서 구현하는 것인데 이런것이 인터페이스로도
가능한 것이므로 둘을 비교해서 간단하게 살펴보자.
예를들어 Animal 클래스가 있고 cat 클래스가 상속을 하든
인터페이스를 상속하든 bark 라는 '야옹이라고 짖는' 메소드를 구현하는 예제이다.
type
{ interface }
IAnimalIntf = interface(IUnknown)
procedure bark;
end;
TCat = class(TInterfacedObject, IAnimalIntf)
public
procedure bark;
end;
{ class inheritance }
TAnimal = class public
procedure bark; virtual; abstract;
end;
TCat2 = class(TAnimal)
public
procedure bark; override;
end;
implementation
procedure TForm1.Button1Click(Sender: TObject);
var
cat: TCat; cat2: TCat2;
begin
cat := TCat.Create; // 인터페이스
cat2 := TCat2.Create; // 상속
cat.bark;
cat2.bark;
cat.free;
cat2.free;
end;
{ TCat }
procedure TCat.bark;
begin
showmessage('myong , (인터페이스)');
end;
{ TCat2 }
procedure TCat2.bark;
begin
showmessage('myong2 , (상속)');
end;
상속에만 익숙해 있다면 인터페이스의 사용도 생각해 보는게 좋을 거 같다.
'Delphi > 문법' 카테고리의 다른 글
델파이 포인터 사용 팁 (0) | 2024.07.04 |
---|---|
인터페이스에 오브젝트 얻기 (0) | 2024.05.30 |
델파이의 String 변수 팁 (0) | 2024.05.24 |
for TCollectionItem (0) | 2024.05.11 |
ShortString, LongString, WideString 정적배열, 동적배열 (0) | 2024.05.06 |
댓글