S
sanhippo1
Unregistered / Unconfirmed
GUEST, unregistred user!
问题一:
Type
0) ICanFly=interface
...
TAirplane=class(TInterfacedObject,ICanFly)
...
var
Airplane1:TAirplane;
Flyer1:ICanFly;
begin
1) Airplane1:=TAirplane.Create;
2) Airplane1.Fly;
3) Flyer1:=TAirplane.Create;
4) Flyer1.Fly;
end;
问题:
a. 0)ICanFly是不是继承自IUnknow?
b. 1)和3)执行后内存中分别发生了什么事?
c. 2)和4)执行后内存中分别发生了什么事?
d. 1)和3)是否都在内存中创建了一个TAirplane的实例?
e. 接口是指向类的指针?或别的什么?和类有什么区别?举个例子吧。
f. 怎么叫TAirplane继承TInterfaceObject实现ICanFly接口?
怎么叫实现?实现后又能干什么?
g. GetInterface和QueryInterface有何区别?
问题二:
type
IAnmial=interface
IBird=interface(IAnimal)
TAnimal=class(TInterfacedObject,IAnimal)
TBird=class(TAnimal,Ibird)
TEagle=class(TBird)
var
Anima:IAnimal
begin
Anima:=TEagle.Create;
问题:
h) Anima为什么能用TEagle.Create?
是不是因为TEagle最上极是TAnimal实现IAnimal接口?
我对接口的概念很混乱,希望各位大虾说清晰一点,多谢了。
Type
0) ICanFly=interface
...
TAirplane=class(TInterfacedObject,ICanFly)
...
var
Airplane1:TAirplane;
Flyer1:ICanFly;
begin
1) Airplane1:=TAirplane.Create;
2) Airplane1.Fly;
3) Flyer1:=TAirplane.Create;
4) Flyer1.Fly;
end;
问题:
a. 0)ICanFly是不是继承自IUnknow?
b. 1)和3)执行后内存中分别发生了什么事?
c. 2)和4)执行后内存中分别发生了什么事?
d. 1)和3)是否都在内存中创建了一个TAirplane的实例?
e. 接口是指向类的指针?或别的什么?和类有什么区别?举个例子吧。
f. 怎么叫TAirplane继承TInterfaceObject实现ICanFly接口?
怎么叫实现?实现后又能干什么?
g. GetInterface和QueryInterface有何区别?
问题二:
type
IAnmial=interface
IBird=interface(IAnimal)
TAnimal=class(TInterfacedObject,IAnimal)
TBird=class(TAnimal,Ibird)
TEagle=class(TBird)
var
Anima:IAnimal
begin
Anima:=TEagle.Create;
问题:
h) Anima为什么能用TEagle.Create?
是不是因为TEagle最上极是TAnimal实现IAnimal接口?
我对接口的概念很混乱,希望各位大虾说清晰一点,多谢了。