<div dir="ltr">Hello,<div><br></div><div>Why is interface implementation not inherited, if explicit implementation is used.</div><div><br></div><div>Example.  </div><div><br></div><div>Here are interfaces:<br>  IAAA = interface<br>    procedure MethodA;<br>  end;<br>  IBBB = interface(IAAA)<br>    procedure MethodB;<br>  end;<br></div><div><br></div><div>Interface IBBB inherits from IAAA</div><div><br></div><div>Here's an implicit interface implementation:</div><div><br>  TObjA = class(TInterfacedObject, IAAA)<br>    procedure MethodA;<br>  end;<br><br>  TObjB = class(TObjA, IBBB)<br>    procedure MethodB;<br>  end;<br></div><div><br></div><div>Class TObjB inherits from TObjA. Where TObjA implements IAAA.<br>And so TObjB only needs to implement MethodB, and MethodA is implicitly mapped for the interface method.</div><div><br></div><div>Here's an explicit interface implementation:</div><div><br>  TImpA = class(TInterfacedObject, IAAA)<br>  public<br>    procedure CallOfA; virtual;<br>    procedure IAAA.MethodA = CAllOfA;<br>  end;<br></div><div><br></div><div>  // compiler error. No matching implementation for interface method "MethodA"; found</div><div>  TImpB = class(TImpA, IBBB) <br>  public<br>    procedure CallOfB;<br>    procedure IBBB.MethodB = CallOfB;<br>  end;<br></div><div><br></div><div>Why is it happening? TImpB inherites from TImpA. In TImpA the MethodA is implemented by "CallOfA".</div><div><br></div><div>Is it a requirement to map all the methods of implemented interfaces? (no matter if they were implemented in parent classes). <br><br></div><div>thanks,<br>Dmitry</div></div>