接口定义以及子类实现中访问属性的问题。(200分)

  • 主题发起人 主题发起人 Passion
  • 开始时间 开始时间
P

Passion

Unregistered / Unconfirmed
GUEST, unregistred user!
一个接口中声明了某属性,实现这个接口的子类中能否不通过强制转换成这个接口而访问这个属性?访问方法都是没问题的。
比如:

IA = interface
function GetAName: string;
procedure SetAName(const value: string);
property AName: string read GetAName write SetAName
end;

TA = class(TInterfacedObject, IA)
published
function GetAName: string;
procedure SetAName(const value: string);
property AName
// 这句编译提示基类找不到 AName
end;

这样我创建一个TA的实例A后,居然不能通过A.AName来访问这个属性,
只能调用其GetAName和SetAName方法。
非得Support(a, IA, b) 后用b这个接口或者as成这个接口后才能调用 AName 属性?

请教达人这是怎么回事,有无法子在实现这个接口的子类中不通过强制转换成这个接口而访问这个属性?
 
IA = interface
function GetAName: string;
procedure SetAName(const value: string);
property AName: string read GetAName write SetAName;
end;

TA = class(TInterfacedObject, IA)
published
function GetAName: string;
procedure SetAName(const value: string);
property AName: string read GetAName write SetAName;
end;
 
我也想知道……
 
楼上的意思是在接口和实现的子类中都加入这个属性的声明?有道理。我去试一试。
 
不错不错,感谢感谢,我脑筋太不灵活了。
 
后退
顶部