<p>What is the difference between these two pieces of code</p>

<pre><code>type
  IInterface1 = interface
    procedure Proc1;
  end;

  IInterface2 = interface
    procedure Proc2;
  end;

  TMyClass = class(TInterfacedObject, IInterface1, IInterface2)
  protected
    procedure Proc1;
    procedure Proc2;
  end;
</code></pre>

<p>And the following :</p>

<pre><code>type
  IInterface1 = interface
    procedure Proc1;
  end;

  IInterface2 = interface(Interface1)
    procedure Proc2;
  end;

  TMyClass = class(TInterfacedObject,  IInterface2)
  protected
    procedure Proc1;
    procedure Proc2;
  end;
</code></pre>

<p>If they are one and the same, are there any advantages, or readability issues with either.</p>

<p>I guess the second means you cannot write a class that implements IInterface2 without implementing IInterface1, whilst with the first you can.</p>

Assuming you meant
```
```
...
IInterface2 = interface(Interface1)
...
```
```
I interpret it the same as you,
the second form requires a class implementing Interface2 to implement Interface1 as well
, while the first form does not.