type
  IShowMsg = interface
    procedure ShowCalssName;
  end;  T_A= class(TInterfacedObject,IShowMsg)
  public
      procedure ShowCalssName;
  end;
//------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
  II : IShowMsg;
  ca : T_A;
begin
  ca := T_A.Create;
  try
    II := ca;
    II.ShowCalssName;
    II := nil;
  finally
    //FreeAndNil(ca); //释放时报错!
  end;
end;