public abstract class Class1 { public Class1() {} public abstract void function1(); } public interface interface1 { void function1(); }The IL generated for these functions is the same:
.method public hidebysig newslot abstract virtual instance void function1() cil managed { } // end of method Class1::function1 .method public hidebysig newslot abstract virtual instance void function1() cil managed { } // end of method interface1::function1The notion of classes and interfaces is really an abstraction for the programmer.