Yes, they are different. Otherwise the language designers wouldn't have provided both. I know two languages that separate classes and interfaces: Java and C#, mutated clone of Java. The designers created interfaces to avoid supporting multiple class inheritance. Most other languages support multiple class inheritance and consequently don't separate classes and interfaces.