본문 바로가기
Delphi/문법

간단한 상속(succession) / 인터페이스(interface)

by MonoSoft 2024. 6. 20.
728x90
반응형

상속(succession)  인터페이스(interface)

728x90

 

 

 

델파이에서는 클래스 다중상속이 안되기 때문에

보통 인터페이스 다중상속을 많이 사용한다.

 

원래 클래스 상속에서 기본적으로 배우는게 공통되는 기능을

상위클래스의 메소드로 만들고 하위클래스에서

그 메소드를 오버라이드 해서 구현하는 것인데 이런것이 인터페이스로도

가능한 것이므로 둘을 비교해서 간단하게 살펴보자.

 

예를들어 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;

 

상속에만 익숙해 있다면 인터페이스의 사용도 생각해 보는게 좋을 거 같다.

 

728x90
반응형

'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

댓글