Midgard2, upcoming 10.05.5 release will introduce quite new and interesting features: abstract classes, interfaces and mixins. And thus multiple inheritance.
Why do we need those types? It's simple, we need good templates, propagated via GObject Introspection. And, what's also very important we want to be much more compatible with Java Content Repository. Well, if you know JCR, you know it's not perfect (as everything all over the world) but it's the only one Content Repository which has such good (and well designed) API and specification. If you do not know JCR, consider to spend some time with its specification and ideas.
OK, what about new types, and how to define them? Let's look at types used in tests.
<type name="FirstTestIface" abstract="interface">
This registers 'FirstTestIface' with 'MidgardBaseInterface' as it's super type. As it's registered as pure interface in GType system, you can easily implement this interface on language level and following local language best practices, check if some instance implements this interface.
<type name="FirstTestMixin" abstract="mixin">
This registers 'FirstTestMixin' with 'MidgardBaseMixin as it's super type. Of course, it's still an interface. But for JCR compatibility, now it's trivial to check if given instance implements some mixin type. Or, what is more important, if it implements more than one mixin and what mixin types.
<type name="AbstractTypeWithInterfaces" metadata="false" abstract="true" extends="SecondTestIface, FirstTestMixin">
This registers abstract class. Note that this abstract class extends 'SecondTestIface' and 'FirstTestMixin' types. Why 'FirstTestIface' is ignored? To make your live easier. You do not have to remember the whole hierarchy. As soon as we need to add new prerequisites to our abstract class, we check if the parent ones are already added. If not, they are added implicitly.
None of these types provide some special functionality or methods. It's not the point at this moment. Instead of specialization, we provide new functionality for derived types.