Is the implementation relation between an interface and a class an instantiation or inheritance relation, or neither? In Python, we have metaclass and abstract class. 

In Java and C#, we have interface and abstract class.

The relation between a metaclass and a class is instantiation, so it extends the instantiation relation between a class and an object.

The relation between an abstract class and a class is inheritance, so it extends the inheritance relation between concrete classes.

The relation between an interface and a class is implementation. 


Is this implementation relation an instantiation relation, an inheritance relation, or neither? 
If neither, can this relation be viewed as some extension of some relation between some classes or objects?
is an interface more like a metaclass or an abstract class?


Thanks.
From notes I have from university, here is an explanation I found useful that may help


  An interface, or protocol as it is sometimes called, is a device that is used to allow unrelated objects to interact with one another, by implementing an agreed upon system of behavior. When a class implements an interface, the class agrees to implement all of the methods defined in the interface. Interfaces are useful since they capture similiarity between unrelated objects without forcing a class relationship.


The important line is the bottom, there is no class relationship between classes that impliment an interface. You cant view it in the same way you would with instances of classes and abstract classes. These give a direct relation in terms of object type and subtype.  It is not a guarantee of relation between objects but instead a guarantee of functionality. 

To your bullets I would say; Neither, not really, and it is not really like either metaclass or abstract class at all.