TMyImplClass = class
procedure P1;
procedure P2;
end;
TMyImplClass自身はTInterfacedObjectじゃないからでしょ。
implementsは使ったことないからどう対処すべきかは知らないけど