type I1 = interface end; T1 = class(I1>)//нужно использовать T1 как тип для шаблона, I1>> тоже сработает i: T; constructor(i: T); begin self.i := i; end; procedure p1; begin var o:object := self;//Нельзя преобразовать тип T1 к object end; end; begin var o: T1 := new T1(2); o.p1; assert(o.i = 2); end.