in C#, are interfaces abstract?
here's one of those questions that tend to get asked at interviews.
is an interface abstract?
my understanding is that in some languages an interface is considered abstract, and it is considered abstract in the sense that its members lack implementation and because it cannot be instantiated directly.
since its members lack implementation these members are said to be 'abstract'.
abstract classes, on the other hand, also can't be instantiated directly but in addition to abstract members, which unlike interface members are declared with the keyword 'abstract', they can also have concrete members.
anyway, i've been asked the question of whether an interface is abstract and this question always felt like it's one of those questions that no matter what you answer your answer is wrong.
if i answer that an interface is abstract then i'm 'guilty' of assuming that the fact that its members lack implementation makes the interface 'abstract', since there is more to 'abstractness' than having members with no implementation.
if I say that it is not abstract then I'm 'guilty' of assuming that because neither an interface nor its members are declared using the keyword 'abstract', they cannot possibly be implicitly abstract and therefore abstract.
what's the proper way to answer this question if you don't want to sound like an idiot the next time you get this question during an interview?