First, I assume the second example declaration for IInterface2 is a typo and should be
IInterface2 = interface(Interface1)
because inheriting from oneself is pointless (even if the compiler accepted it).
And "inheritance" is the key word to answer your question. In Example 1, the two interfaces are completely independent, and you can implement one, the other, or both without problems. In Example 2, you are right that you cannot implement interface2 without implementing interface1, but the reason is that this is because it makes interface1 part of interface2.
The difference, therefore, is primarily structural and organizational, and not just readability.
source share